【问题标题】:How to map and replace Combining Diaeresis in PHP如何在 PHP 中映射和替换 Combining Diaeresis
【发布时间】:2017-08-08 12:55:09
【问题描述】:

我在尝试用 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_gla ̈ nzende_ringe.jpg 对此 image_glänzende_ringe.jpg

这是文件名的截图

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

为什么投反对票?我的问题有什么问题?

【问题讨论】:

  • @deceze:背后的逻辑很简单。我需要一张地图,在其中定义新文件名的重命名方式。

标签: php regex unicode


【解决方案1】:

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

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

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

【讨论】:

  • 嗨 IcedAnt,这对我不起作用。什么都没有被替换。
猜你喜欢
  • 1970-01-01
  • 2020-08-23
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
  • 2021-02-08
  • 2013-09-26
  • 2020-01-04
  • 2017-03-20
相关资源
最近更新 更多