如何从给定的字符串中提取data-url?

时间:2013-09-25 07:40:42

标签: php regex

  $string = '<img alt="Peachtree St Apartment 2" data-url="http://i.oodleimg.com/item/3472578127t_1m_condos,_townhouses_&amp;_apts_for_sale_in_johnson_city_tn/?1377909664" src="http://i.oodleimg.com/a/animate/spinner-small.gif" class="lazyload-image">';

我想在PHP中提取data-url参数。

2 个答案:

答案 0 :(得分:5)

这对 XPath 来说非常棒! 不知道XPath是什么?让维基百科answer that

  

XPath,XML Path Language,是一种用于选择节点的查询语言   来自XML文档。此外,XPath可用于计算值   (例如,字符串,数字或布尔值)来自XML的内容   文献。 XPath由万维网联盟(W3C)定义。

因此,对于您的特定用户案例,查询将为:

//img[@class='lazyload-image']/@data-url

所以你可以像:

一样使用它
$query("//img[@class='lazyload-image']/@data-url");
$xpath->query($query);

然后你可以自由地迭代它。我在这件事上考虑了你的img-tag附加的类,但随意删除:

//img/@data-url

More info on how to use XPath with PHP (DOMXPath) in the manual

答案 1 :(得分:0)

使用正则表达式,您可以执行以下操作:

$string = '<img alt="Peachtree St Apartment 2" data-url="http://i.oodleimg.com/item/3472578127t_1m_condos,_townhouses_&amp;_apts_for_sale_in_johnson_city_tn/?1377909664" src="http://i.oodleimg.com/a/animate/spinner-small.gif" class="lazyload-image">';
$matches = array();
$url = '';
if (preg_match('/data-url="([^"]+)"/', $string, $matches)) {
    $url = $matches[1];
}