PHP - 如何从许多img的src获取所有网址?

时间:2017-06-04 17:01:01

标签: php string codeigniter frameworks

我们假设我们有这样的字符串:

Its really great to <img src="image2.png" /> hear from you "Today is good <img src="http://www.google.com/picture2.png" /> day" Let's listen song together! ---------<img src="images/profile.png" />\\\\\\

这是整个字符串。我们里面有3个img。

我们希望从此字符串中生成变量,如

output[0] = 'image2.png';
output[1] = 'http://www.google.com/picture2.png';
output[2] = 'images/profile.png';

我的意思是,我们有这个字符串,以及如何处理他以提取所有&#34; src&#34;来自img标签并将其收集在一个新的数组变量中。

怎么做?我们如何才能实现这一目标?

另外我使用CodeIgniter框架。也许只有这个框架的方法可以做到,但我认为不可能。

3 个答案:

答案 0 :(得分:1)

在整个页面的源上使用preg_match_all ( string $pattern , string $subject [, array &$matches来选择src =值。像这样:

$src = array (); // array for src's
preg_match_all ( '/src="([^"]+)"/', $page_source, $src );
$just_urls = $src [1];

$page_source是您的输入,$srcsrc=值的结果数组,而$just_urls是一个仅包含引号内部的数组。

模式/src="([^"]+)"/将仅返回引号内的内容。

请参阅: https://secure.php.net/manual/en/function.preg-match-all.php

答案 1 :(得分:1)

使用preg_match_all()

$src = <<<EOL
Its really great to <img src="image2.png" /> hear from you "Today is good
<img src="http://www.google.com/picture2.png" /> day" Let's listen song
together! ---------<img src="images/profile.png" />\\\\\\
EOL;

preg_match_all('~src="([^"]+)~', $src, $matches);

var_export($matches[1]);
// output ->
//        array (
//          0 => 'image2.png',
//          1 => 'http://www.google.com/picture2.png',
//          2 => 'images/profile.png',
//        )

直播demo

更新:您可以在正则表达式模式中使用\K来获得$matches所需的内容:

preg_match_all('~src="\K[^"]+~', $src, $matches);
var_export($matches);
// output ->
//      array (
//        0 =>
//        array (
//          0 => 'image2.png',
//          1 => 'http://www.google.com/picture2.png',
//          2 => 'images/profile.png',
//        ),
//      )

有关参考,请参阅Escape sequences

答案 2 :(得分:0)

您需要使用PHP DOM Extension。 DOM扩展允许您通过带有PHP的DOM API操作XML文档。

您也可以查看以下代码:

function fetchImages($content) {
    $doc = new DOMDocument(); 
    $doc->loadHTML($content);
    $imgElements = $doc->getElementsByTagName('img');

    $images = array();

    for($i = 0; $i < $imgElements->length; $i++) {
        $images[] = $imgElements->item($i)->getAttribute('src');
    }

    return $images;
}
$content = file_get_contents('http://www.example.com/');
$images = fetchImages($content);

print_r($images);