php替换html里面的内容

已知下面一段html

$a="

\"1.png\"/\"undefined\"/\"undefined\"/\"undefined\"/\"undefined\"/

"

里面有http和https还有本地相对路径的url

普遍用法:

$pattern="//";
preg_match_all($pattern,htmlspecialchars_decode($a),$match);
if(!empty($match[1])){
    print_r($match[1]);
}else{
echo "没得";
}

先匹配所有在循环$match[1]

循环之后foreach($match[1] as $val){preg_replace('#src="'.$val.'"/#is', 'src="aaaaa/',$a);}

这样我觉得挺麻烦的

升级用法:

$host="http://mp.csdn.net"
$newContent =  preg_replace_callback("//", function($m) use($host){

   if(strpos($m[1],'http://') || strpos($m[1],'https://')){
       return $m[0];
   }else{
       $img=preg_replace('#src="/#is', 'src="'.$host.'/',$m[0]);
       return $img;
   }
}, $a);

这个方法虽然用得少但是批处理的时候看效果超级好哟!

这种闭包函数我个人挺喜欢的。代码阅读性很高

你可能感兴趣的:(php)