【发布时间】:2011-05-01 04:56:44
【问题描述】:
我下面的代码产生了一个错误,未知的修改“|”...我正在尝试将它用作 OR 运算符。正确运行此代码的方法是什么?
$p = "(\w+)|(\()|(\))|(\,)";
$s = "sum(blue,paper,green(yellow,4,toast)))";
preg_match($p,$s, $matches);
print_r($matches);
编辑
好的,我稍微改了一下...~(\w+|\(|\)|,)~
现在...问题来了:我需要将该字符串拆分成这样的数组:
array("sum","(","blue","paper","green","(" ... etc );
有人可以帮我做吗?当我运行上面的表达式时,它输出一个空数组....
谢谢
【问题讨论】:
-
$p = '~(\w+)|([(])|([)])|(,)~';IMO 会更易读,你不需要转义逗号。 -
@Kobi:感谢您指出我的错字! :)
-
re: 编辑 - 我得到 [0] => sum [1] => sum 的输出。工作正常,除了两件事:1)您预期的数组不会将逗号显示为数组元素,因此如果您不想要它,您需要从您的模式中删除它。 2)如果你想要不止一场比赛,你应该使用 preg_match_all
标签: php regex preg-match