Выбор фонового URL из атрибута стиля с XPATH (и PHP) - PullRequest
3 голосов
/ 07 сентября 2011

Я бы хотел выбрать только URL из этого атрибута стиля фонового изображения, возможно ли это с 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 ]

1 голос
/ 07 сентября 2011

Используйте

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"
0 голосов
/ 14 октября 2017

<?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 '';
        print_r($arrHolder);
        echo '
'; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...