php stru替换为丹麦字符';s

php stru替换为丹麦字符';s,php,preg-replace,str-replace,Php,Preg Replace,Str Replace,我正在从字符串中删除丹麦特殊字符,我有一个这样的字符串1554896020A2å。pdf丹麦字符是“æå”,用于删除丹麦字符,我正在使用stråu replace,我成功地删除了这两个“æø”字符,但我不知道这一个“å”没有从字符串中删除。提前谢谢你的帮助 我用这个来去除丹麦字符 $patterns = array('å', 'æ', 'ø'); $replacements = array('/x7D', 'X', '/x7C'); echo str_replace($patterns, $r

我正在从字符串中删除丹麦特殊字符,我有一个这样的字符串1554896020A2å。pdf丹麦字符是“æå”,用于删除丹麦字符,我正在使用stråu replace,我成功地删除了这两个“æø”字符,但我不知道这一个“å”没有从字符串中删除。提前谢谢你的帮助

我用这个来去除丹麦字符

$patterns = array('å', 'æ', 'ø');
$replacements = array('/x7D', 'X', '/x7C');
echo str_replace($patterns, $replacements, 1554896020A2å.pdf);

字符串中的
a
不是单个代码单元,而是由两个代码单元组成的代码点,
\xCC
\x8A

因此,您可以将此值添加到模式/替换中:

$patterns = array('å', "a\xCC\x8A", "A\xCC\x8A", 'Å', 'æ', 'ø');
$replacements = array('/x7D', '/x7D', '/x7D', '/x7D', 'X', '/x7C');
echo str_replace($patterns, $replacements, '1554896020A2å.pdf');
// => 1554896020A2/x7D.pdf

在PHP7中,可以使用
“a\u{030A}”
/
“a\u{030A}”
将这些
a
字母与其变音符号相匹配


请注意,如果您决定使用正则表达式并匹配任何带有变音标记的
a
s,则可以将
/a\p{M}+/ui
regex模式与
preg\u replace
一起使用
i
用于不区分大小写的匹配,如果不需要,请删除。

它看起来像一个两字节的“char”:
a
加上一个变音符号。尝试将
“a\u{030A}”
添加到
$patterns
列表中。看,我能做什么,你知道吗?看。或
$patterns=array('å','a\xCC\x8A','æ','ø')也将做这项工作。谢谢,是的,它现在可以工作了,我也有它的资本,如“Å”我可以用什么我补充了一个答案。请随意调整。谢谢你的回答,我不知道为什么它不工作,所有的都工作,但对于这个Å它在safari中工作,你有什么想法吗?@SalmanIqbal如果它是一个宽字符(因为Unicode代码点),请按原样添加它。我把它添加到上面的解决方案中,它给了我这个错误。preg_replace():未知修饰符“a”为什么
preg_replace
?我的示例代码基于
str\u replace
。使用str_replace使用“/A\p{M}+/ui”,通过它共享代码不工作。