Regex获取值=“0”;在HTML中


Regex to grab value=" in HTML

我想使用cURL:从以下HTML代码中获取值updateXXXX

<input type="hidden" id="_postupdate" name="_postupdate" value="updateXXXX" /><input type="hidden"(...)

我试过

$regex = '/name="_postupdate" value="(.*?)" '/><input type="hidden"/s';
if ( preg_match($regex, $page, $list) )
echo $list[0];

但没有成功。有什么建议吗?:)感谢

不要用regexp解析HTML相反,让HTML解析器库为您担心标记的结构。

您可能需要使用DOMDocument类来执行此操作。然后,您可以使用XPath查询来提取数据。

你可以使用这样的东西:

$html = '<input type="hidden" id="_postupdate" name="_postupdate" value="updateXXXX" />';

$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$tags = $xpath->query('//input[@name="_postupdate"]');
foreach ($tags as $tag) {
    var_dump(trim($tag->getAttribute('value')));
}

您可以使用如下的无自由开关:

$regex = '/name="_postupdate" value="(.*)" '/><input type="hidden"/Us';

或者你排除了这样的报价:

$regex = '/name="_postupdate" value="([^"]*)" '/><input type="hidden"/s';

我同意,在一般情况下,不建议使用regex来解析html。在这种情况下,要匹配的文本定义良好且简单。

Regex比html解析器更快,但如果html代码发生微小更改,它们就会失败。在使用regex时必须意识到这一弱点,如果代码可能会随着时间的推移而演变,则应避免使用regex。