0

在一个字符串中,我有许多 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);

怎么了 ?

也将非常感谢帮助使其更通用,例如在属性随机顺序的情况下。

谢谢,奥列格。

4

1 回答 1

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');
于 2013-09-28T10:11:59.647 回答