我需要通过以下代码允许'okina字符
<?php $char = preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F\x80-\xFF]/u', '', $char); ?>
我试图找到一个明确的解释,说明范围如何在这里工作,以及如何从一个没有运气的范围中挑出一个字母。我该怎么做?
由于
答案 0 :(得分:0)
由于你的正则表达式只阻塞长度为一个字节或更短的“某些”字符,因此它不可能阻塞okina字符,因为它是一个双字节字符。所以,我建议你试试这个正则表达式:
<?php $char = preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F]/u', '', $char); ?>
并允许所有字符x80-xFF通过,看看是否能解决您的问题。
如果确实如此,可能是“左侧单引号”(西方字符集中的x91),你会对okina感到困惑。
答案 1 :(得分:0)
您所指的字符是MODIFIER LETTER TURNED COMMA(U + 02BB),在Unicode标准中描述为“在夏威夷正字法中用作'kina(声门停止)”。可能有人认为它是最正确的'',但肯定不是唯一用于此目的的角色。很常见'okina'是用右单引号'U + 2019,左单引号'U + 2018,(Ascii)撇号'U + 0027,或重音'U + 0060。
但考虑到U + 02BB,它可以用PHP正则表达式\x{02bb}
编写。有关表示法的说明,请参阅How do I replace characters not in range [0x5E10, 0x7F35] with '*' in PHP?