我想在PHP中匹配HTML页面的不同单词,像这样&但是这些词在同一个句子里有问题!!
Eg 1和Eg 2。我们在同一页!!
假设我有这些行
Eg 1. $html="
write('A')</script>
write('B')</script>
write('C')</script>
write('D')</script>
write('E')</script>";
preg_match_all('/写(' ' ([a - z]) ') & lt;>/脚本/',html,美元与美元);我将匹配A,B,C,D,E但是......&如何存储多个匹配??
另一个相同的
我还想匹配所有这些"数字"在这个代码
Eg 2. $html="
write(33453)</script>
write(6987)</script>
write(4544)</script>
write(345)</script>
write(7876)</script> ";
preg_match_all('/写((?))& lt;>/脚本/',html,美元$ matches);
我的问题是我如何存储多个匹配,如您在eg中看到的。1和;2,然后像下面第三个输出一样将其组合回显:(
A-33453
B-6987
C-4544
D-345
E-7876
,我也想帮助我如何在Eg 2中随机选择一个数字。比如345 from array ????
$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";
你没有得到任何数组结果,因为你的正则表达式是错误的:
preg_match_all('/write(''[A-Z]'')</script>/',$html,$match);
(
和)
不匹配字面括号。它们需要转义为'(
和')
。
在script
之前还有一个未转义的分隔符/
。它也需要一个转义的反斜杠。当某些东西不工作时启用error_reporting(E_ALL);
。
只有这样$match[0]
才会包含任何内容。您可能想要在([A-Z])
周围添加捕获父级,以获得可用的$match[1]
。