繁体   English   中英

PHP正则表达式从文件名到扩展名替换字符

[英]php regex replace caracters from filename until extension

我想从文件名中替换除'A-Z','a-z','0-9', '_', '-', '(', ')'以外'A-Z','a-z','0-9', '_', '-', '(', ')'所有字符,直到扩展名。

目前我有:

$filename = '23$%^&.234234.%^.234$%$#)(.^$.png';

$fileName = preg_replace('/[^A-Za-z0-9_\-\(\) ]/', '-', $filename);

我得到

$filename : 23------234234----234----)(----png

问题是“。” 从扩展名中删除。 文件名可以具有不同的扩展名。

我应该如何更改字符,而不是扩展名。

您可以尝试使用pathinfo函数将扩展名与文件名分开,并仅在基本文件名中替换不需要的字符。 一切完成之后,只需合并这些部分:

$filename = '23$%^&.234234.%^.234$%$#)(.^$.png';
$pathinfo = pathinfo($filename);
$filename = implode('.', array(
  preg_replace('/[^A-Za-z0-9_\-\(\) ]/', '-', $pathinfo['filename']),
  $pathinfo['extension']
));

var_dump($filename);

输出:

string '23-----234234----234----)(---.png' (length=33)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM