我正在尝试清理来自多语言网站上搜索框的字符串。
通常我会使用正则表达式:
$allowed = "-+?!,.;:\w\s";
$txt_search = preg_replace("/[^" . $allowed . "]?(.*?)[^" . $allowed . "]?/iu", "$1", $_GET['txt_search']);
,这适用于英文文本。
然而,现在我需要做同样的事情,输入的文本可以是任何语言(现在是俄语,将来是中文)。
如何在保留原始语言的“普通文本”的同时清理字符串?
我虽然要切换到黑名单(虽然我不是......)但是此刻正则表达式完全破坏了所有原始输入。
答案 0 :(得分:6)
您可以使用 \ p {LN} [\p{L}\p{N}]
代替\ w,请参阅http://www.php.net/manual/en/regexp.reference.unicode.php
答案 1 :(得分:1)
这是常见问题,俄语字母无法被\ w模式识别,因此可以使用
$ allowed =“ - +?!,。;:\ w \sа-я”;