preg_replace多重替换错误


preg_replace multiple-replace bugs

我正在尝试创建一个在上传文件后重命名文件的函数,但该函数不起作用,我不明白为什么。

这是简单的示例代码:

echo $pathinfo["filename"]."<br/>";
$pathinfo["filename"] = preg_replace('/[ÝŶŸỲỸỶỴ]/', "Y", $pathinfo["filename"]);
echo $pathinfo["filename"]."<br/>";

其中输出:

JPEG xè.w_.a(m)aaỶle_oui_
JPEG xY�.w_.a(m)aaYYYle_oui_

è 被转换为 ??Ỷ 变成 YYY !?

我真的不明白为什么我没有"JPEG xè.w_.a(m(aaYle_oui_"。

谢谢大家

如果你想

抓取Unicode字符,你应该在你的正则表达式中添加u修饰符。

echo $pathinfo["filename"]."<br/>";
$pathinfo["filename"] = preg_replace('/[ÝŶŸỲỸỶỴ]/u', "Y", $pathinfo["filename"]);
echo $pathinfo["filename"]."<br/>";