我对于正则,不是很熟悉,正则对字符串的处理非常的广泛,什么都可以做,有时只需要它的一点功能就可以做很多的字符串处理了,路(.*?)就是通配符的基本正则表达式,对正则我不熟悉,经常需要用类似通配符的处理字符串,所以我 写了一个可以使用通配符的简单的处理字符串替换的函数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; ?> |
|
来自: 昵称48103793 > 《php》