-2

可能重复:
获取 A 元素的 href 属性

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

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

我需要获取 onload 事件属性中的链接。是否可以?

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

谢谢。

4

1 回答 1

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
于 2012-09-11T07:29:37.710 回答