[英]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.