我怎样才能提取或在一个字符串的preg_replace中国文字?(How can I extract

2019-10-21 19:18发布

我目前有一个像这样的字符串列表

蘋果,香蕉,橙。
榴蓮, 啤梨
鳳爪,排骨,雞排
24個男,2個女,30個老人

我想要做的就是从爆炸这些字符串的所有中国和字母数字字符。 我怎么能代替所有特殊字符,例如 , / " ,并用空格-_

然后提取与所有中国字符explode()$str = explode("-",$str);$str = explode("_",$str);

我目前有一个这样的正则表达式

 if(/^\S[\u0391-\uFFE5 \w]+\S$/.test(value)).....

而且我修改成

 $str = preg_replace("/^\S[\x{0391}-\x{FFE5} \w]+\s+\S$/u", "-", $str);

但似乎没有奏效...

在线exampls: https://www.regex101.com/r/qR8aA6/1

编辑:我的预期输出(用于蛰头):

首先,它应该被替换成

蘋果-香蕉-橙- or 蘋果_香蕉_橙_

然后我可以使用$str = explode("-",$str); 使他们最终成为:

Array
    (
     [0] => 蘋果
     [1] => 香蕉
     [2] => 橙
     )

Answer 1:

好像你想是这样的,

$txt = <<<EOT
蘋果,香蕉,橙。
榴蓮, 啤梨
鳳爪,排骨,雞排
24個男,2個女,30個老人
EOT;
echo preg_replace('~[^\p{L}\p{N}\n]+~u', '-', $txt);

输出:

蘋果-香蕉-橙-
榴蓮-啤梨
鳳爪-排骨-雞排
24個男-2個女-30個老人

DEMO

说明:

  • \p{L}匹配来自任何语言的任何类型的信。
  • \p{N}匹配任何脚本任何种类的数字字符的。
  • \n匹配一个换行符。
  • 通过将所有一个否定的字符类内部会做相反的操作。


文章来源: How can I extract or preg_replace chinese characters in a string?