PHP Regex选择隐藏字段名称,值

时间:2011-07-27 16:53:39

标签: php regex

如何正确使用php regex从html中提取隐藏字段名称,值对?

2 个答案:

答案 0 :(得分:4)

按照惯例,不要使用REGEX来处理HTML

使用dom:

$dom = new DOMDocument;
$dom->loadHTML('your html here');

$xp = new DOMXPath($dom);
$hidden = $xp->query("//input[@type='hidden']");
for ($i = 0; $i < $hidden->length; $i++) {
    echo $hidden[$i]->getAttribute('name');
}

编辑:刚刚看到您对格式错误的HTML的评论:使用HTMLPurifier清理HTML。希望它没有那么严重,以至于净化器无法将其清理到DOM将接受它的状态。

答案 1 :(得分:0)

你的问题是你实际上有无效的HTML,DomDocument无法解析。您可以先修复它,例如使用Tidy PHP extension,这很容易:

$html = 'you HTML here';
$html = tidy_repair_string($html);

然后proceed as Marc B suggested