繁体   English   中英

去除字符串中与PHP中字母、数字、特定符号和汉字不匹配的字符

[英]Remove characters in a string that does not match letters, numbers, specific symbols, and Chinese characters in PHP

如果不是,我想删除字符串中的字符:

  • 信件
  • 数字
  • 空格或空格
  • 具体符号: ( ) 。 - /
  • 中国文字

例如:

A3M \ Mfg. (&&$) *Co; 應龙龍.

变成:

A3M Mfg. () Co 應龙龍.

我试着这样做:

$string = 'A3M \ Mfg. (&&$) *Co; 應龙龍.';
$string = preg_replace('/[^-A-Za-z0-9().\/ \u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff66-\uff9f]/s', '', $string);

echo $string;

但不需要的字符仍然存在

PHP 支持使用\\x{....}而不是\\u\u003c/code>代码点表示法。 然而,有一种更好的方法来处理这个问题,使用unicode 字符类\\p{Han}来捕获所有中文字符。

使用此正则表达式搜索:

[^-\w()./\s\p{Han}]+

替换为空字符串。

正则表达式演示

代码:

$string = 'A3M \ Mfg. (&&$) *Co; 應龙龍.';
$string = preg_replace('~[^-\w()./\s\p{Han}]+~u', '', $string);
echo $string;
//=> "A3M  Mfg. () Co 應龙龍."

请注意,由于原始字符串中可移动字符周围存在空格,因此它可能会留下很少的双空格实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM