根据类或id获取图像的src属性

时间:2011-06-05 22:34:32

标签: php regex src

我想基于class或id在图像中获取src。 防爆。在html页面上有许多<img src="url">但只有一个有类或id: <img src="url" class="image" or id="image"> 如何获得具有特定类或ID的正确src属性? 请正则表达式不是

我会解释你为什么我不想使用dom或其他库,因为我从其他网站获得一个不允许fopen或_file_get_contents或DOM的html页面,但只有Curl才能这样做。当然我有理由不使用像simplehtmldom这样的库,因为有时候不可能获得远程html页面,我应该自己制作一些脚本。

2 个答案:

答案 0 :(得分:7)

您说您不想使用DOM库,因为您需要使用cURL。没关系 - DOMDocumentsimple_xml_load_string都接受字符串参数。因此,您可以从cURL获取字符串并将其加载到DOM库中。

例如:

$html = curl_exec($ch); // assuming CURLOPT_RETURNTRANSFER

$dom = new DOMDocument;
$dom->loadHTML($html); // load the string from cURL into the DOMDocument object

// using an ID
$el = $dom->getElementById('image');

// using a class
$xpath = new DOMXPath($dom);
$els = $xpath->query('//img[@class="image"]');
$el = $els->item(0);

$src = $el->getAttribute('src');

答案 1 :(得分:4)

如果你绝对必须使用正则表达式,那么它就是

<img(?:[^>]+src="(.+?)"[^>]+(?:id|class)="image"|[^>]+(?:id|class)="image"[^>]+src="(.+?)")

也就是说,正确的方法是使用jQuery或类似的DOM解析技术。除非你有充分的理由,否则不要使用正则表达式,因为它会遗漏很多情况(例如,如果使用单引号而不是双引号或者在“image”之前有空格,它将无效。)< / p>