如何在PHP中映射和替换Combining Diaeresis

时间:2017-08-08 12:55:09

标签: php regex unicode

我在尝试用PHP替换Combining Diaeresis时遇到了问题。我的目标是有一个重命名文件的地图,比如

"a¨ " => ä
"a ¨" => ä
"a¨"  => ä

这个正则表达式

protected static $regex = '@\pM@u';
$filename = Normalizer::normalize($filename, Normalizer::FORM_D);
$filename = preg_replace(self::$regex, '', $filename);

只是给出了我的结果 image_gla nzende_ringe.jpg

但我需要重命名这个原始文件名 image_glänzende_ringe.jpg 对此 image_glänzende_ringe.jpg

这是文件名的Scrrenshot enter image description here

那么如何扩展正则表达式?

为什么选票下降?我的问题有什么问题?

1 个答案:

答案 0 :(得分:0)

你真的需要一个正则表达式吗?您可以通过定义2个数组并使用str_replace来实现更轻松,如下所示:

$before = array ( "a ̈ ", "e ̈ " );
$after = array ( "ä", "e" );
$filename = str_replace ( $before, $after, $filename );

编辑以回答评论:我正在使用此代码从德语单词中删除变音符号。正如您在下面所看到的,它在您的情况下也像魅力一样。

http://phptester.net/