使用DOM php解析事件属性

时间:2012-09-11 07:05:18

标签: php dom

  

可能重复:
  Grabbing the href attribute of an A element

我想知道如何使用DOM php解析事件属性? 例如

<body onload="javascript:PopWin('http://google.com')">

我需要获取onload事件属性中的链接。 有可能吗?

不使用preg_match并解析整个html。使用DOMDocument,我们可以使用getAttribute('src')或getAttribute('href')获取所有其他属性,如“src”,“href”等。获取事件属性有什么类似的方法吗?应该捕获事件“onload”中的任何链接

感谢。

1 个答案:

答案 0 :(得分:0)

DOM php API中没有方法可以为您提供onload属性的URL,因此您必须使用我建议的方法(或类似方法)。但首先得到属性:

$body = "<body onload=\"javascript:PopWin('http://google.com')\"></body>";

$doc = new DOMDocument(); 
$doc->loadHTML($body);

$bodyElements = $doc->getElementsByTagName("body"); 
$body = $bodyElements->item(0);

$attribute = $body->getAttribute('onload');

echo $attribute; // outputs: javascript:PopWin('https://google.com')

完成后,您可以使用简单的正则表达式来提取URL:

(?:.+?)(https?://[\w\d.&?=]+)(?:.+?)

像这样:

$mathes = array();
preg_match('`(?:.+?)(?<url>https?://[\w\d.&?=]+)(?:.+?)`', $attribute, $matches);

echo $matches['url']; // outputs https://google.com