简单 html dom 从属性获取内联背景图像 URL

simple html dom get in-line background-image URL from Attribute

我正在尝试使用简单 HTML DOM 从 HTML 属性获取 CSS 背景图像 URL。 这是代码

$String=' <div class="Wrapper"><i style="background-image: url(https://example.com/backgroud-1035.jpg);" class="uiMediaThumbImg"></i></div>';
$html = new simple_html_dom();
$html->load($String); 
foreach($html->find('i') as $a0)
$src[$i++]=$a0->style;
foreach( $src as $css  ) 
print($css);

输出是这样的:-

background-image: url(https://example.com/backgroud-1035.jpg); 

我只想要从其余 CSS 标签中剥离背景 Url。像这样 https://example.com/backgroud-1035.jpg

您可以使用正则表达式去除括号之间的文本。

foreach($html->find('i') as $a0){
    $style = $a0->style;
    preg_match('/\(([^)]+)\)/', $style, $match);
    $src[$i++] = $match[1];
    //echo $match[1];
}

也许你找到了答案,但对于谁没有 我将使用 explode() 函数,这样我就可以将字符串分解为一个数组, 查看更多关于 explode() 函数 here 的信息。 首先,我将 $css 变量拆分为数组。数组是这样的:

background-image: url(https://example.com/backgroud-1035.jpg);" 
Array ( [0] => background-image: [1] => https://example.com/backgroud-1035.jpg);

然后把['1']打散成数组,就变成这样

Array ( [0] => https://example.com/backgroud-1035.jpg [1] => ; )

然后打印 ['0'] .

// it will output https://example.com/backgroud-1035.jpg 

完整代码:

    $String=' <div class="Wrapper"><i style="background-image: 
    url(https://example.com/backgroud-1035.jpg);" class="uiMediaThumbImg"></i></div>';
    $html = new simple_html_dom();
    $html->load($String); 
    foreach($html->find('i') as $a0)
    $src[$i++]=$a0->style;
    foreach( $src as $css  ) 
    
    $explode1 = explode("url(",$css);
    $explode2 = explode(")",$explode1['1']);
    print_r ($explode2['0']);