很多站长朋友们都不太清楚php正则替换网页内容,今天小编就来给大家整理php正则替换网页内容,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP正则替换 2、 求个PHP简单的正则替换。 3、 php正则替换html代码中的内容 PHP正则替换$source=你的原字符串。
$source=preg_replace('/(<img(?:(?!onclick)[\s\S])*)onclick\S++((?:(?!src)[\s\S])*src=[\'"]([^\'"]++)[\'"][^>]+>)/','<a href="$3">$1$2</a>',$source);
这个正则替换的要求是增加一部分,删除一部分。
像我上面给你这个答案虽然可以在一行里面替换完成,但是正则式本身会比较复杂,而且默认你的onclick必然在src之前,如果onclick在src之后则无法匹配。
也可以让这个式子再复杂一些,让它可以自动识别onclick和src是否存在,甚至自动适应onclick和src的顺序。
但过于复杂的正则式就不容易维护了。
因此比较好的做法是分两部完成它。
第一步增加a tag
第二步删除onclick
或者反过来也可以。
你可以自己尝试一下分步处理的方案,很简单的。
----------------------------------------------
给你写了一个处理函数,你搭配下面的preg_replace_callback用就是了。
实际上是把分步处理都包含在函数里面了,这样你也比较容易看懂,自己维护起来也方便。
function wrapper($block){
//转存局部变量
$img=$block[0];
//$match[0]为匹配文,$match[1]为其类别,$match[2]为其内容,/S是study模式,如果你需要处理的标签很多,或者你需要处理的文本很大,那么这个S的效率提高会比较明显。
//这里主要是处理alt和src
preg_match_all('/(alt|src)=([\'"][^"\']++[\'"])/S',$img,$match);
//显式声明a tag的链接容器和title容器,不声明也可。
$href=null;
$title=null;
//对刚才获取的内容进行处理,从alt中取出title,从src或onclick中获取href
foreach($match[1] as $key=>$name)
{
switch($name){
case 'alt':
$title='title='.$match[2][$key];
break;
case 'src':
$href='href='.$match[2][$key];
break;
default:
break;
}
}
//这里处理onclick
if(preg_match('/onclick=([^\s>]++)/',$img,$match))
{
//如果之前没有显示声明,这里就应该使用!isset($href)进行判断
if(!$href){$href='href='.$match[1];}
$img=str_replace($match[0],'',$img);
}
//生成a tag并返回变换后的数据
return "<a $title $href>".$img."</a>";
}
$source=preg_replace_callback('/<img[^>]++>/','wrapper',$source);
求个PHP简单的正则替换。给你个思路,首先读取网页文件内容
file_get_contents ( $filename )
然后进行替换:
str_replace('查找内容','替换内容',网页内容);
然后写入网页文件
file_put_contents ( $filename, $data )
php正则替换html代码中的内容这个简单,用不上正则,直接字符串替换即可:
$str = "<font size="2" face="楷体\\\\\\\_GB2312"> 犯罪研究与辩护部”、“刑民交叉研究与辩护部”等10余个专业部门。</font>";
$new_str = str_replace('size="2"', '', $str); // 这是替换为空
$new_str = str_replace('size="2"', 'size=""', $str);//这是替换为空属性值
关于php正则替换网页内容的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php正则替换网页内容 php正则匹配链接的详细内容...