从多语言字符串中删除所有非字母字符

use*_*606 0 php multilingual preg-replace

我有一个适用于多种语言的网站,我正在寻找一个 php 函数来从跨多种语言的字符串中去除所有垃圾。

示例:我将以下内容以印地语插入到我的数据库中,但对于其他语言也是如此。

??????? ?? ????? ???????? ????? ????...\'

所以你可以看到我得到了不需要的 ...\' 字符。

这并不适用于多种语言

$newString = preg_replace('/[^a-z0-9]/i', ' ', $text); 
Run Code Online (Sandbox Code Playgroud)

我也试过,我真的不明白这里发生了什么,这也不起作用。

$newString = preg_replace(''/^[\p{L}\p{M}\p{Nd}]{2,}$/u'', ' ', $text);  
Run Code Online (Sandbox Code Playgroud)

我真的只需要去掉键盘上不是字母或数字的所有东西,即

!@£$%^&*()_+=.<>/, etc etc
Run Code Online (Sandbox Code Playgroud)

我不确定字符串中的 ...\' 是否真的不是它看起来的样子,如果这有意义的话,因为如果我跑了。

$newString = str_replace("...\'", "", $text);
Run Code Online (Sandbox Code Playgroud)

这是我第一次真正深入了解多语言。

Ben*_*aap 5

我设法用这个把它们弄出来:

$test = '??????? ?? ???? ?? ?????? ?? ???? ?? ????...\\';
$test = preg_replace('@[^\x{0900}-\x{097F}]@u', '', $test);
Run Code Online (Sandbox Code Playgroud)

输出

?????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

我使用的正则表达式替换了不在该 unicode 范围内的所有字符。