分享

PHP正则使用通配符(*)达到替换字符串

 昵称48103793 2017-10-05

我对于正则,不是很熟悉,正则对字符串的处理非常的广泛,什么都可以做,有时只需要它的一点功能就可以做很多的字符串处理了,路(.*?)就是通配符的基本正则表达式,对正则我不熟悉,经常需要用类似通配符的处理字符串,所以我 写了一个可以使用通配符的简单的处理字符串替换的函数tihuan_str()

正则其他的功能实现就比较难了,路可变的数量(把字符分类,路数字,这些地方不好把握)

<?php  

//写一个通配符替换的字符串的函数  

//使用说明:tihuan_str($fustr,$str1,$str2)函数使用方法:$fustr---要处理的字符串,$str1---可以使用(*)通配符的要替换的字符串 , $str2-----替换为的新字符串,最后返回处理结果$fustr;  

$fustr="sdfs<table 七哥博客>七哥博客blog.0735dj.com </table>df<table dhfht>单个</table>";;  

$str1='<table(*)>(*)</table>';  

$str2='(我被替换啦)';  

function tihuan_str($fustr,$str1,$str2)  

{if(empty($fustr)||empty($str1)){echo '参数12不得空字符<br>';return $fustr; }  

$wz1=0;  

$arr=explode('(*)',$str1);  

$arr1=array();  

$k=0;  

//过滤空字符  

for($i=0;$i<count($arr);$i++)  

{if($arr[$i]!==''){$arr1[$k]=$arr[$i];$k++;}  

}  

$cishu=0;  

while($wz1<strlen($fustr))  

{//单个替换的过程  

$jishu=0;  

for($i=0;$i<count($arr1);$i++)  

{  

if(($wz=strpos($fustr,$arr1[$i],$wz1))!==false)  

{ if($i==0)$ks=$wz;   

if($i==count($arr1)-1)$js=$wz+strlen($arr1[$i]);  

$wz1=$wz+strlen($arr1[$i]);  

$jishu++;  

}  

else break;  

}  

//当符合条件时  

if($jishu==count($arr1)){$cishu++;  

echo '第'.$cishu.'次替换:<br>';  

echo 'begin:'.($ks+1).' end:'.$js.'<br>';  

$leftstr=substr($fustr,0,$ks);  

$rightstr=substr($fustr,$js);  

if(!$rightstr)$rightstr='';  

$fustr=$leftstr.$str2.$rightstr;  

$wz1=$ks+strlen($str2);  

echo 'next:'.($wz1+1).'<br>';  

echo $fustr.'<br>';  

}  

else{echo '停止<br>';break;}  

echo '<br><br>';  

}  

return $fustr;  

}    

$str=tihuan_str($fustr,$str1,$str2);  

echo '替换效果:'.$str;   

?>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多