如何提取或 preg_replace 字符串中的汉字?
How can I extract or preg_replace chinese characters in a string?
我目前有一个这样的字符串列表
蘋果,香蕉,橙。
榴蓮, 啤梨
鳳爪,排骨,雞排
24個男,2個女,30個老人
我想做的就是从这些字符串中分解出所有中文和字母数字字符。
如何用 -
或 _
[=29 替换所有特殊字符,如 ,
,
。
/
"
和空格=]
然后提取所有带有 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);
但是好像没用...
在线示例:https://www.regex101.com/r/qR8aA6/1
编辑:我的预期输出(第一次刺痛):
首先应该替换成
蘋果-香蕉-橙-
或 蘋果_香蕉_橙_
然后我可以用$str = explode("-",$str);
让他们最终变成:
Array
(
[0] => 蘋果
[1] => 香蕉
[2] => 橙
)
看来你想要这样的东西,
$txt = <<<EOT
蘋果,香蕉,橙。
榴蓮, 啤梨
鳳爪,排骨,雞排
24個男,2個女,30個老人
EOT;
echo preg_replace('~[^\p{L}\p{N}\n]+~u', '-', $txt);
输出:
蘋果-香蕉-橙-
榴蓮-啤梨
鳳爪-排骨-雞排
24個男-2個女-30個老人
解释:
\p{L}
匹配来自任何语言的任何类型的字母。
\p{N}
匹配任何脚本中的任何类型的数字字符。
\n
匹配换行符。
- 通过将 all 放入否定字符 class 将执行相反的操作。
我目前有一个这样的字符串列表
蘋果,香蕉,橙。
榴蓮, 啤梨
鳳爪,排骨,雞排
24個男,2個女,30個老人
我想做的就是从这些字符串中分解出所有中文和字母数字字符。
如何用 -
或 _
[=29 替换所有特殊字符,如 ,
,
。
/
"
和空格=]
然后提取所有带有 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);
但是好像没用...
在线示例:https://www.regex101.com/r/qR8aA6/1
编辑:我的预期输出(第一次刺痛):
首先应该替换成
蘋果-香蕉-橙-
或 蘋果_香蕉_橙_
然后我可以用$str = explode("-",$str);
让他们最终变成:
Array
(
[0] => 蘋果
[1] => 香蕉
[2] => 橙
)
看来你想要这样的东西,
$txt = <<<EOT
蘋果,香蕉,橙。
榴蓮, 啤梨
鳳爪,排骨,雞排
24個男,2個女,30個老人
EOT;
echo preg_replace('~[^\p{L}\p{N}\n]+~u', '-', $txt);
输出:
蘋果-香蕉-橙-
榴蓮-啤梨
鳳爪-排骨-雞排
24個男-2個女-30個老人
解释:
\p{L}
匹配来自任何语言的任何类型的字母。\p{N}
匹配任何脚本中的任何类型的数字字符。\n
匹配换行符。- 通过将 all 放入否定字符 class 将执行相反的操作。