允许在php preg_替换中使用点
我正在使用一个上传脚本来清理一些文件名(以及在其他地方清理永久链接)。如果函数如下所示,我如何修改它以允许使用允许在php preg_替换中使用点,php,regex,preg-replace,Php,Regex,Preg Replace,我正在使用一个上传脚本来清理一些文件名(以及在其他地方清理永久链接)。如果函数如下所示,我如何修改它以允许使用: setlocale(LC_ALL, 'en_US.UTF8'); function toAscii($str, $replace=array(), $delimiter='-', $exception = '') { if( !empty($replace) ) { $str = str_replace((array)$replace, ' ', $str);
:
setlocale(LC_ALL, 'en_US.UTF8');
function toAscii($str, $replace=array(), $delimiter='-', $exception = '') {
if( !empty($replace) ) {
$str = str_replace((array)$replace, ' ', $str);
}
$clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
$clean = strtolower(trim($clean, '-'));
$clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);
return $clean;
}
提前谢谢
EDIT稍微修改了函数以反映我的实际使用情况-很抱歉。所以您只想避免替换文字
字符,对吗?如果圆点位于字符类内,则应按字面解释,因此您的第一行正则表达式将变成:
$clean = preg_replace("/[^a-zA-Z0-9\/_|+ .-]/", '', $clean);
@杰罗斯:我觉得我可能误解了你的意图。您是否运行了上述版本,并且遇到了问题?你尝试过什么,结果如何?