21,887
社区成员
发帖
与我相关
我的任务
分享
<?php
//一个通配符替换的字符串的函数
//使用说明:tihuan_str($fustr,$str1,$str2,$max)函数使用方法:$fustr---要处理的字符串,$str1---可以使用(*)通配符的要替换的字符串 , $str2-----替换为的新字符串,最后返回处理结果$fustr;$max------是最大次数,默认0为不限制,非零数限制替换最大个数
function tihuan_str($fustr,$str1,$str2,$max=0)
{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)&&($cishu<$max||$max==0))
{//单个替换的过程
$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;
}
//一个测试
$fustr="sdfs<table 大股东大股东dgdg>dfs大股东</table>df<table dhfht>asdasd单个</table>";;
$str1='<table(*)>(*)</table>';
$str2='(我被替换啦)';
$str=tihuan_str($fustr,$str1,$str2,0);
echo '不设置限制替换效果:'.$str.'<br><br>';
$str=tihuan_str($fustr,$str1,$str2,1);
echo '设置最大数量1替换效果:'.$str;
?>
$s = '匹配某一个关键字 然后 替换 而且这个替换次数 是可以控制的';
$num = 1; //替换次数
$key = '替换';
echo preg_replace("/$key/", '[$0]', $s, $num);
For($i=0;$i<10;$i++){
$需要替换的内容=Strtr($需要替换的内容,Array("关键字"=>"替换后的内容"));
Echo '你已经替换了',$i,'次了!';
}
For($i=0;$i<10;$i++){
$需要替换的内容=Strtr($需要替换的内容,Array("关键字"=>"替换后的内容"));
Echo '你已经替换了',$i,'次了!';
IF($i==100){
Break;
}
}
<?php
echo str_replace("world","John","Hello world!");
?>