Php 从文本中提取图像src?

Php 从文本中提取图像src?,php,Php,我有一个变量$content,其中包含此表单中的一些文本和图像(图像数量未知): 做这样的事情最好的方法是什么。我已经尝试过函数爆炸,但这种方法似乎效率低下 下面是一个示例,使用: $dom=新的domDocument; $dom->loadHTML($html); $dom->preserveWhiteSpace=false; $imgs=$dom->getElementsByTagName(“img”); $links=array(); 对于($i=0;$ilength;$i++){ $li

我有一个变量$content,其中包含此表单中的一些文本和图像(图像数量未知):

做这样的事情最好的方法是什么。我已经尝试过函数爆炸,但这种方法似乎效率低下

下面是一个示例,使用:

$dom=新的domDocument;
$dom->loadHTML($html);
$dom->preserveWhiteSpace=false;
$imgs=$dom->getElementsByTagName(“img”);
$links=array();
对于($i=0;$i<$imgs->length;$i++){
$links[]=$imgs->item($i)->getAttribute(“src”);
}
使用正则表达式:

<?php

$str = '    text text text text <img src="path/to/image/1">text text text text
    <img src="path/to/image/2">
text text text text text text text text text text text text text text text text <img src="path/to/image/3"><img src="path/to/image/4">text text text text
<img src="path/to/image/5">';


preg_match_all('@<img.*src="([^"]*)"[^>/]*/?>@Ui', $str, $out);

print_r($out[1]);

?>

重复正则表达式对于这样的事情效率很低;看看这里的答案:最好使用DomDocument!简单可靠!对于可以由DOM处理的东西,我不推荐使用正则表达式。稍微修改一下HTML,它就不工作了。你不觉得为这样一个琐碎的任务安装simplehtmldom有点过分吗?不,它只是一个不需要安装的PHP文件。HTML解析必须使用HTML解析器完成。不是regexp或其他类似的东西。我不是指“安装”本身,而是下载一个340kB的压缩文件(所以可能是1MB的未压缩文件?)来做一些domDocument可以做的事情,而不需要“安装”任何东西,IMHO,这是非常困难的overkill@mike实际上,压缩文件就是一堆例子!主文件不到50k,定义了2个类,对于那些不希望dom拥有所有共犯的人来说,这是一件好事!此代码仅显示数组的最后一个元素。我怎么修理它?
array(
[1]="path/to/image/1"
[2]="path/to/image/2"
[3]="path/to/image/3"
[4]="path/to/image/4"
[5]="path/to/image/5"
.
.
.
)
include("simple_html_dom.php");
$content = '
text text text text <img src="path/to/image/1">text text text text
    <img src="path/to/image/2">
text text text text text text text text text text text text text text text text <img src="path/to/image/3"><img src="path/to/image/4">text text text text 
<img src="path/to/image/5"> ';

$html = str_get_html($content);
$images = $html->find("img");
$links = array();
foreach($images as $image) {
  $links[] = $image->src;
}

print_r($links);
Array
(
    [0] => path/to/image/1
    [1] => path/to/image/2
    [2] => path/to/image/3
    [3] => path/to/image/4
    [4] => path/to/image/5
)
    $dom = new domDocument;
    $dom->loadHTML($html);
    $dom->preserveWhiteSpace = false;
    $imgs  = $dom->getElementsByTagName("img");
    $links = array();
    for($i = 0; $i < $imgs->length; $i++) {
       $links[] = $imgs->item($i)->getAttribute("src");
    }
<?php

$str = '    text text text text <img src="path/to/image/1">text text text text
    <img src="path/to/image/2">
text text text text text text text text text text text text text text text text <img src="path/to/image/3"><img src="path/to/image/4">text text text text
<img src="path/to/image/5">';


preg_match_all('@<img.*src="([^"]*)"[^>/]*/?>@Ui', $str, $out);

print_r($out[1]);

?>
Array
(
    [0] => path/to/image/1
    [1] => path/to/image/2
    [2] => path/to/image/3
    [3] => path/to/image/4
    [4] => path/to/image/5
)