PHP从字符串中删除符号

Dim*_*los 11 php string symbols

通过互联网和本网站搜索,我发现了几个关于此事的主题.事实上,如果插入的字符串必须只包含拉丁字母的字符,那么有无数的解决方案,但是当案例需要其他字母的文本时,它会有点棘手.

有没有什么方法可以在PHP中删除字符串中的所有符号,但保留所有UTF-8字母的实际字母?我已经尝试创建一个包含键盘所有字符的数组,然后使用str_replace或preg_replace删除它们,但后来我发现不同的国家/地区也有不同的键盘,有时包含不同的符号.例如,我的qwerty键盘没有£英国键盘可能具有的符号.

我知道这是一个奇怪的问题,我只是想知道是否有一个我可能错过的简单解决方案.

任何帮助将非常感谢!

编辑: 确定经过一些更好和扩展的谷歌后,我发现以下正则表达式适用于我需要的东西,并保留所有类型的字母表的所有字母,同时删除所有符号.我在这里分享它,以防其他人需要做同样的事情.

$string = preg_replace('/[^\p{L}\p{N}\s]/u', '', $string);

Dim*_*los 36

解决方案是这样的: $string = preg_replace('/[^\p{L}\p{N}\s]/u', '', $string);


小智 16

$string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.

$string = preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.

echo $string; // output will be abcdef-g for 'a|"bc!@£de^&$f g'
Run Code Online (Sandbox Code Playgroud)

  • 真正.但我需要的是允许所有字母表,而不仅仅是拉丁字母. (2认同)