preg_match - 查找包含单词A而不是B的表单

时间:2015-01-15 16:10:05

标签: php preg-match

我正在使用PHP preg_match来查找和解析页面上的特定表单。到目前为止,我的代码运行良好,但我发现一些不需要的表单现在包含我实际需要的单词,因此这些不需要的表单也被解析。简而言之,我需要解析包含单词“findme”的所有表单,而不是在URL中包含单词“ignoreme”。

这是我的preg_match:

<form action=("|\'?)([0-9a-zA-Z:\/\._~\-\?=]+)findme(.*?)\/form>

不幸的是,如果表单URL类似于/ some_url / ignoreme / findme / whatever,代码仍会解析它,这是我不想要的。我该如何修改代码?

1 个答案:

答案 0 :(得分:0)

$dom = new DOMDocument;
$dom->loadHTML($yourHTML);

$xpath = new DOMXPath($dom);

$formNodeList = $xpath->query('//form[contains(@action, "findme") and not(contains(@action, "ignoreme"))]');

foreach($formNodeList as $formNode) {
    // do what you want with the DOMNode (see php manual)
}