我目前有一个像这样的字符串列表
蘋果,香蕉,橙。
榴蓮, 啤梨
鳳爪,排骨,雞排
24個男,2個女,30個老人
我想要做的只是从这些字符串中分解所有中文和字母数字字符。
如何替换所有特殊字符,例如,
,
。
/
"
和空格-
或_
然后使用explode()
或$str = explode("-",$str);
等$str = explode("_",$str);
提取所有中文字符?
我目前有一个像这样的RegEx
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] => 橙
)
答案 0 :(得分:1)
好像你想要这样的东西,
$txt = <<<EOT
蘋果,香蕉,橙。
榴蓮, 啤梨
鳳爪,排骨,雞排
24個男,2個女,30個老人
EOT;
echo preg_replace('~[^\p{L}\p{N}\n]+~u', '-', $txt);
<强>输出:强>
蘋果-香蕉-橙-
榴蓮-啤梨
鳳爪-排骨-雞排
24個男-2個女-30個老人
<强>解释强>
\p{L}
匹配任何语言的任何类型的信件。\p{N}
匹配任何脚本中的任何数字字符。\n
匹配换行符。