gpt4 book ai didi

php - 正则表达式:如何让\b 使用 utf-8 字符集?

转载 作者:行者123 更新时间:2023-12-04 20:57:28 25 4
gpt4 key购买 nike

我试图从字符串中删除短于 3 个字符的单词,并想出了这个正则表达式:!\b[\pL\pN]{1,2}\b!u 其中一般工作,但在大多数波兰语字符 (ąćęłńśżź) 上中断,这些字符被视为非字母符号和单词边界(如果有问题的字符恰好在那里,则在中间拆分单词)。

演示此现象的示例代码:

$text = " ää äaa aaäaaa ââ âaa aaâaa ąą ąaa aaąaaa àà áá ââ ãã åå ää ææ ßß ćć èè êê ëë ęę éé ìì íí îî ïï öö òò ôô õõ øø óó ùù úú ûû üü ąą ćć ęę łł ńń óó śś żż źź ";
echo "<h1>input</h1><p>$text</p>";
$text = preg_replace('!\b[\pL\pN]{1,2}\b!u', 'X', $text);
echo "<h1>output</h1><p>$text</p>";

给出输出(注意 aaąaaa 被拆分):

input
ää äaa aaäaaa ââ âaa aaâaa ąą ąaa aaąaaa àà áá ââ ãã åå ää ææ ßß ćć èè êê ëë ęę éé ìì íí îî ïï öö òò ôô õõ øø óó ùù úú ûû üü ąą ćć ęę łł ńń óó śś żż źź

output
X äaa aaäaaa X âaa aaâaa ąą ąX XXaaa X X X X X X X X ćć X X X ęę X X X X X X X X X X X X X X X ąą ćć ęę łł ńń X śś żż źź
^split

使用 setlocale() 设置不同的语言环境没有帮助。

在 Windows 上使用 PHP 5.3.0。

最佳答案

你不能制作\b工作。它只匹配 ASCII 字边界。 http://www.mail-archive.com/pcre-dev@exim.org/msg00110.html

但您可以尝试使用否定断言 (?<!\pL)(?!\pL)代替 \b测试。

关于php - 正则表达式:如何让\b 使用 utf-8 字符集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5900661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com