两个BUG及解决方法

功能描述:

读取HTML代码并替换其中的IMG标签中SRC属性为指定地址。

BUG 1:

测试中发现存在部分IMG无法替换,通过FIREBUG调试发现存在异常IMG解析:<img "="" src="{链接地址}" />。

检查代码发现是以为HTML代码存在不规范的IMG定义,造成所写的正则判断后产生的数组存在误差造成的。测试的代码如下:

<?php
$pre = '<img src="./1.png"/>';   //注意:IMG结束的'/'是和前面的'"'紧连的
$pattern = '/<img src=([\'\" ])?(.+?)([ >]+?)/';
$content = preg_replace_callback($pattern,'image_replace',$pre);
print_r($content);
function image_replace($matches) {
    $matches[2] = rtrim($matches[2],'\'"'); //标记1:修改
    var_dump($matches);
    return "<img src=".$matches[1].$matches[2].$matches[1].$matches[3];
}
/*End of PHP*/

可以先运行以上代码查看输出结果。

处理办法:

修改标志1代码为:$matches[2] = rtrim($matches[2],'\'"/');

BUG2:

HMTL代码读取PNG格式图片时候显示为黑色。

因为设计考虑是读取读取输出,代码如下:

<?php
$fileurl = './1.png';
header("Content-type: image/png");
$img = imagecreatefrompng($fileurl); //标记2
imagepng($img);
imagedestroy($img);
/*End of php*/

按照以上代码输出会造成BUG2出现,解决办法是在利用PNG的ALPHA通道。

PHP系统函数:(PHP 4 >= 4.3.2, PHP 5)

imagesavealpha设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息(与单一透明色相反)

具体操作:

在标记2处添加代码: imagealphablending($img,false) ;imagesavealpha($img,true);

你可能感兴趣的:(两个BUG及解决方法)