在一个字符串中,我有许多HTML元素,其中一个是应该被解析的输入。
<input name="generate" value="52FadA=" type="hidden">
我已经制作了正则表达式,但它不起作用。可能是转义字符,不清楚:(
preg_match_all('/input[\s](?:(?:name\="generate"[\s]value\="(.*)")|(?:value\="(.*)"[\s]name\="generate"))[\s]/i',$html,$matches,PREG_SET_ORDER);
有什么问题?
也非常感谢帮助做到更普遍,例如在随机属性顺序的情况下。
谢谢,奥列格。
答案 0 :(得分:2)
不要用正则表达式解析html。使用DOMDocument::loadHTML($string)
然后使用DOM或XPath方法查询数据。 DOMDocument::loadHTML()
将优雅地解析文档片段。
在您的示例中,它可能如下所示:
$str = '<input name="generate" value="52FadA=" type="hidden">';
$doc = new DOMDocument();
$doc->loadHTML($str);
$value = $doc->getElementsByNodeName('input')->item(0)->getAttribute('value');