我希望匹配php中的html页面的不同单词,就像这样&但这些话有问题在同一句话!!
例如1和例2.同一页!!!
假设我有这些行
Eg 1. $html="
write('A')</script>
write('B')</script>
write('C')</script>
write('D')</script>
write('E')</script>";
preg_match_all(&#39; /写(\&#39;([A-Z])&#39;)&LT; /脚本&GT; /&#39;,$ HTML,$匹配); 我会匹配A,B,C,D,E但是......&amp; 如何存储多个匹配?
另一个与此相同的
我也想匹配所有这些&#34;数字&#34;在此代码中
Eg 2. $html="
write(33453)</script>
write(6987)</script>
write(4544)</script>
write(345)</script>
write(7876)</script> ";
preg_match_all(&#39;?/写((*))≤; /脚本&GT; /&#39;,$ HTML,$匹配);
我的问题是如何在eg.1和eg.2中看到如何存储多个匹配,然后像下面的第三个输出中那样组合回显:(
A-33453
B-6987
C-4544
D-345
E-7876
&安培;我也想要帮助,如何在Eg 2中随机选择一个数字,比如数组中的345?
答案 0 :(得分:0)
您没有获得任何数组结果,因为您的正则表达式错误:
preg_match_all('/write(\'[A-Z]\')</script>/',$html,$match);
(
和)
与字面括号不匹配。他们需要转发为\(
和\)
。
在/
之前,您还有一个未转义的分隔符script
。这也需要逃避反斜杠。只要有什么东西不起作用,就启用error_reporting(E_ALL);
。
只有这样$match[0]
才会包含任何内容。您可能希望在([A-Z])
周围添加捕获数据以获得可用的$match[1]
。
答案 1 :(得分:0)
$html = <<<EOF
write('A')</script>
write('B')</script>
write('C')</script>
write('D')</script>
write('E')</script>
write(33453)</script>
write(6987)</script>
write(4544)</script>
write(345)</script>
write(7876)</script>
EOF;
preg_match_all('~write\(\'([A-Z])\'\)</script>~', $html, $match1);
preg_match_all('~write\(([0-9]+)\)</script>~', $html, $match2);
foreach ($match1[1] as $i => $char)
echo "$char-{$match2[1][$i]}\n";