使用php自动为html页面上的每个图像添加宽度和高度

时间:2015-02-23 18:22:48

标签: php

我正在尝试自动为页面中的所有图像添加宽度和高度,但由于某种原因,它会为图像添加约3倍的宽度和高度,并且它的工作非常努力。从我的测试中getimagesize函数是加载困难的问题,但是为了重复每个img标记的宽度和高度3次我不能得到它。

REGEX VERSION

$html = file_get_contents('http://www.inspiredhealing.org');
$html = preg_replace( '/(width|height)="\d*"\s/', "", $html );
$html = preg_replace( '/(width)="\d*"\s/', "", $html );
$html = str_replace('width="60"', '', $html);
$img_sources = preg_match_all('/< *img[^>]*src *= *["\']?([^"\']*)/i', $html, $images);
foreach($images[1] as $src) {
    $image_size = getimagesize($src);
    $html = str_replace($src.'"', $src.'" '.$image_size[3], $html);
}
var_dump($html);

DOM文档版本

$html = file_get_contents('http://www.inspiredhealing.org');
$dom = new domDocument;
libxml_use_internal_errors(true);
$dom->loadHTML($html);
$html = preg_replace( '/(width|height)="\d*"\s/', "", $html );
$html = preg_replace( '/(width)="\d*"\s/', "", $html );
$html = str_replace('width="60"', '', $html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');
$img_sources = array();
foreach ($images as $image) {
    if($image->getAttribute('src') !== '') {
        array_push($img_sources, $image->getAttribute('src'));
    }
}
foreach($img_sources as $src) {
    $image_size = getimagesize($src);
    var_dump($image_size);
    //$html = str_replace($src.'"', $src.'" '.$image_size[3], $html);
}
var_dump($html);

我添加了带有dom文档的版本,但是脚本仍然运行缓慢,并且它在图像中获得了5倍的宽度和高度属性,它确实在数组中我获得了5次相同的链接,但是如何正确添加。数组$img_sources会像这样:

array(
     'fb.png', 
     'fb.png',
     'fb.png'
....
)

所以它广告到相同的标签,但在fb.png的所有实例上都是宽度和高度的5倍,而不是将它添加1次到数组的每个元素。所以问题就在于foreach($img_sources as $src) {但是如何克服这个问题。

0 个答案:

没有答案