如何正确使用php regex从html中提取隐藏字段名称,值对?
答案 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);