您好,我使用正则表达式尝试了以下代码
$str = preg_replace("/[^a-z0-9_]/i", '', 'New_text % *');
//output => New_text
( _ 除了 char )
一切都很完美,但是当我输入的字符串类似于其他语言(例如印地语)时,印地语中的字符会 也删除。
同上例
$str = preg_replace("/[^a-z0-9_]/i", '', 'कपिल शर्मा % * _');
//output => _
how to get: कपिल शर्मा _
正则表达式或 PHP 中我们可以做的任何其他方式是否有任何错误?
最佳答案
你需要使用
'~[^\p{M}\w]+~u'
参见 regex demo
PHP PCRE正则表达式似乎不匹配带有\W
和/u
修饰符的组合标记,所以,我们需要使用相应的[^\w]
否定字符类并在其中添加 \p{M}
Unicode 属性(组合标记)。
关于PHP:如何从字符串中删除特殊字符(某些除外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38013235/