使用XPATH(和PHP)从style属性中选择背景URL

时间:2011-09-07 11:43:40

标签: php dom xpath attributes

我想从这个背景图片样式属性中仅选择网址,这是否可以使用XPATH?

 <a href="http://www.test.com" style="background-image: url('http://www.test.com/hello.jpg');">test</a>

我喜欢

$url  = $xpath->query('//a//@style');

2 个答案:

答案 0 :(得分:1)

使用

substring-before(substring-after(@style, "'"),
                 "'"
                )

基于XSLT的验证

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/*">
     "<xsl:value-of select=
     "substring-before(substring-after(@style, &quot;&apos;&quot;),
                       &quot;&apos;&quot;
                       )
     "/>"
 </xsl:template>

</xsl:stylesheet>

将此转换应用于提供的XML文档

 <a href="http://www.test.com" style=
 "background-image: url('http://www.test.com/hello.jpg');">test</a>

产生了想要的正确结果

 "http://www.test.com/hello.jpg"

答案 1 :(得分:0)

&#13;
&#13;
<?php
$arrHolder = array();
        foreach ($xpath->query('//*[@style]') as $node) {
            if (strpos($node->getAttribute('style'), 'background:url') !== FALSE) {

                array_push($arrHolder, $node->tagName . " = " . $node->getAttribute('style'));
            }
        }
        echo '<pre>';
        print_r($arrHolder);
        echo '</pre>';
?>
&#13;
&#13;
&#13;