怎么来对字符串进行替换? 本帖最后由 dsmyphp 于 2012-02-06 18:00:27 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 利用preg_match_all + PREG_OFFSET_CAPTURE就可以匹配到你想替换的东西,以及匹配的东西的偏移量,接下来怎么做你你懂的。<?php$a="1234683214312354436214214125436121436";$b="76234265832465867892353463476254273434252";preg_match_all('#1#',$a,$match,PREG_OFFSET_CAPTURE);echo "<pre/>"; print_r($match);?> <?php$a="1234683214312354436214214125436121436";$b="76234265832465867892353463476254273434252";preg_match_all('#1#',$a,$match,PREG_OFFSET_CAPTURE);echo "<pre/>"; print_r($match);?> 本帖最后由 PhpNewnew 于 2012-02-06 22:41:46 编辑 想问下你的办法和2楼的哪位哪个执行效率高一点?比如超5000个字符;下面是我按2楼函数写出的丑陋代码,(在次感觉这行我不能达到很高的水平,自卑中。。)看下我的能否有改进提升效率的方法?<?php$a="!aaaaaaaa!bbbbbbbb!cccccccc!dddddddd!eeeeeeee!fffffff!gggggg";preg_match_all('#!#isU',$a,$match,PREG_OFFSET_CAPTURE);$zongkh=count($match[0]); //总共的<括号$zjkh=(int)$zongkh/2; //中间的括号$weizhi=($match[0][$zjkh][1])-6; //所在位置去前面6位+后2位$rrr=substr($a,$weizhi,8);$dd=str_replace($rrr,"@@".$rrr,$a);echo $dd;?> 代码最后发出来写错一个地方。修正 if (in_array($number, $array)) {我给你测试测试,原则上是不用正则则不用正则。当然如果东西不多效率并不会差很多。 ${"zbnr".$i}=preg_replace('#</li>#is','',${"zbnr".$i});${"zbnr".$i}=preg_replace('#<li>#is','',${"zbnr".$i});${"zbnr".$i}=preg_replace('#<p>#is','',${"zbnr".$i});${"zbnr".$i}=preg_replace('#</p>#is','',${"zbnr".$i});${"zbnr".$i}=preg_replace('#</i>#is','',${"zbnr".$i});${"zbnr".$i}=preg_replace('#<i>#is','',${"zbnr".$i});${"zbnr".$i}=preg_replace('#<br>#is','',${"zbnr".$i});这种写成这样效率会高点吗?${"zbnr".$i}=preg_replace('#(</li>|<li>|<p>|</p>|</i>|<i>|<br>)#is','',${"zbnr".$i}); 本帖最后由 PhpNewnew 于 2012-02-06 23:18:58 编辑 本帖最后由 PhpNewnew 于 2012-02-06 23:27:45 编辑 xdebug +自己写的代码 $array = str_split($str); $key = array_keys($array, $number); $cKey = count($key); if ($cKey == 1) { str_replace($number, $change, $str); }这部分就是了 自己改一改? 这个str_split拆那么多下感觉不好我把自己那个改下算了。谢谢了! 安装了apache只能在360浏览器上测试有用 请教PHP将数据导出到EXCEL中的问题。 谁能给我说说个学PHP和MySQL的教程网 数据库问题 PHP!! 博客文章段落如何截取? 请问一个横排分层目录树的解决思路. 网页加了meta标签,为什么还显示是乱码?急!!! 这个是怎么实现的? 求一个PHP和Mysql数据库连接的例子 关于ORACLE字符集问题 部分文字乱码怎么处理?
<?php
$a="1234683214312354436214214125436121436";
$b="76234265832465867892353463476254273434252";
preg_match_all('#1#',$a,$match,PREG_OFFSET_CAPTURE);
echo "<pre/>";
print_r($match);
?>
$a="1234683214312354436214214125436121436";
$b="76234265832465867892353463476254273434252";
preg_match_all('#1#',$a,$match,PREG_OFFSET_CAPTURE);
echo "<pre/>";
print_r($match);
?>
比如超5000个字符;下面是我按2楼函数写出的丑陋代码,(在次感觉这行我不能达到很高的水平,自卑中。。)看下我的能否有改进提升效率的方法?
<?php
$a="!aaaaaaaa!bbbbbbbb!cccccccc!dddddddd!eeeeeeee!fffffff!gggggg";
preg_match_all('#!#isU',$a,$match,PREG_OFFSET_CAPTURE);
$zongkh=count($match[0]); //总共的<括号
$zjkh=(int)$zongkh/2; //中间的括号
$weizhi=($match[0][$zjkh][1])-6; //所在位置去前面6位+后2位
$rrr=substr($a,$weizhi,8);
$dd=str_replace($rrr,"@@".$rrr,$a);
echo $dd;
?>
代码最后发出来写错一个地方。修正 if (in_array($number, $array)) {我给你测试测试,原则上是不用正则则不用正则。当然如果东西不多效率并不会差很多。
${"zbnr".$i}=preg_replace('#</li>#is','',${"zbnr".$i});
${"zbnr".$i}=preg_replace('#<li>#is','',${"zbnr".$i});
${"zbnr".$i}=preg_replace('#<p>#is','',${"zbnr".$i});
${"zbnr".$i}=preg_replace('#</p>#is','',${"zbnr".$i});
${"zbnr".$i}=preg_replace('#</i>#is','',${"zbnr".$i});
${"zbnr".$i}=preg_replace('#<i>#is','',${"zbnr".$i});
${"zbnr".$i}=preg_replace('#<br>#is','',${"zbnr".$i});这种写成这样效率会高点吗?
${"zbnr".$i}=preg_replace('#(</li>|<li>|<p>|</p>|</i>|<i>|<br>)#is','',${"zbnr".$i});
xdebug +自己写的代码
$array = str_split($str);
$key = array_keys($array, $number);
$cKey = count($key);
if ($cKey == 1) {
str_replace($number, $change, $str);
}这部分就是了 自己改一改?
我把自己那个改下算了。
谢谢了!