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