从字符串中获取所有图像网址

ili*_*ica 10 html php string parsing image

可能重复:
如何使用PHP从html中提取img src,title和alt?

嗨,
我找到了从字符串中获取第一张图片的解决方案:

preg_match('~<img[^>]*src\s?=\s?[\'"]([^\'"]*)~i',$string, $matches);
Run Code Online (Sandbox Code Playgroud)

但我无法设法从字符串中获取所有图像.
还有一件事......如果图像包含替代文本(alt属性)如何获取它并保存到另一个变量?
在此先感谢,
Ilija

cle*_*tus 32

不要使用正则表达式执行此操作.而是解析HTML.看一下使用PHP和DOM解析HTML.这是PHP 5.2.x中的标准功能(可能更早).基本上获取图像的逻辑大致是:

$dom = new domDocument;
$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
  echo $image->getAttribute('src');
}
Run Code Online (Sandbox Code Playgroud)

这对于适应寻找图像应该是微不足道的.


ili*_*ica 8

这是我尝试但无法获得src的打印值

 $dom = new domDocument;

    /*** load the html into the object ***/
    $dom->loadHTML($html);

    /*** discard white space ***/
    $dom->preserveWhiteSpace = false;

    /*** the table by its tag name ***/
    $images = $dom->getElementsByTagName('img');

    /*** loop over the table rows ***/
    foreach ($images as $img)
    {
        /*** get each column by tag name ***/
        $url = $img->getElementsByTagName('src');
        /*** echo the values ***/
        echo $url->nodeValue;
        echo '<hr />';
    }
Run Code Online (Sandbox Code Playgroud)

编辑:我解决了这个问题

$dom = new domDocument;

/*** load the html into the object ***/
$dom->loadHTML($string);

/*** discard white space ***/
$dom->preserveWhiteSpace = false;

$images = $dom->getElementsByTagName('img');

foreach($images as $img)
    {
        $url = $img->getAttribute('src');   
        $alt = $img->getAttribute('alt');   
        echo "Title: $alt<br>$url<br>";
    }
Run Code Online (Sandbox Code Playgroud)