如何在PHP正则表达式中存储多个匹配词


how to store multiple match words in an array in php regex?

我想在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]