考虑以下。
function cleanText($text) {
return preg_replace("/[^0-9\p{Latin}\p{Cyrillic}\.\-\_\s+]+/u","",$text);
}
$tmp = "intro_|_text Mary had a little lamb, we'll be right back 123456789 абвгдђежзијкл ,./'* αβγδε šđ";
echo cleanText($tmp);
预期的输出是(在phpfiddle.org和repl.it上都可以看到):
intro__text Mary had a little lamb well be right back 123456789 абвгдђежзијкл . šđ
但是,带有PHP 7.4.8的Xampp,并且此站点返回以下内容(后者与每个PHP 7.4。*一起返回):
aMaryhadalittlelambwellberightback123456789абнллклл.šđ
如果\p{Latin}\p{Cyrillic}
删除,则保留空格。里面有单个空格和特定字母的正确方法是preg_replace
什么?
您可以使用\p{L}
Unicode属性代替其支持在此处似乎被破坏的属性。
您可以使用
preg_replace('/[^0-9\\p{L}\\s._+-]+/u', '', $text)
还要注意,-
在字符类的末尾使用它是更安全的,以免转义它。.
并且_
不需要转义,这_
是一个单词char,并且.
在字符类中失去了其特殊含义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句