preg_replace有关问题求解

WBOY
发布: 2016-06-13 10:42:39
原创
776 人浏览过

preg_replace问题求解
我又一个字符串:
$html = '

  • 《mainGood》
  • 《subGood》《subGood》
';//《mainGood》《subGood》个数不定

我现在用echo preg_replace("/(《mainGood》)|(《subGood》)/is",回调函数,$html);

我本来想用回调函数的方法替换《mainGood》为1,第一个《subGood》为2,第三个《subGood》为3,依次类推,我本来想在回调函数中获取到当前替换的是第几个,然后确定替换内容。但是在回调函数中不知道该怎么写了,请高手帮下忙。

------解决方案--------------------
是这个意思么?

PHP code
<?php$html = '<ul><li>《mainGood》《mainGood》</li><li>《subGood》《subGood》《subGood》</li></ul>';echo preg_replace("/(《mainGood》|《subGood》)/eis","foo('$1')",$html);function foo($v){    global $count;    if($v=='《mainGood》'){        return 1;    }else{        $count  ;        return $count 1;    }}//<ul><li>11</li><li>234</li></ul><br><font color="#e78608">------解决方案--------------------</font><br>$num_mainGood = $num_subGood = 0;<br>echo preg_replace_callback("/(《mainGood》)|(《subGood》)/is", '回调函数', $html);<br><br>function 回调函数($r) {<br> global $num_mainGood, $num_subGood;<br> if($r[1]) $num_mainGood  ;<br> if($r[2]) $num_subGood  ;<br> //以下写返回内容的代码<br><br>}<br><br><font color="#e78608">------解决方案--------------------</font><br>
登录后复制
PHP code
[[email protected] php_project]$ php main.php <ul><li>a</li><li>bc</li></ul>[[email protected] php_project]$ cat main.php <?php$html = <<<EOF<ul><li>《mainGood》</li><li>《subGood》《subGood》</li></ul>EOF;$count = 0;$map = array(0 => 'a', 1 => 'b', 2 => 'c');$result = preg_replace_callback('/《mainGood》|《subGood》/i',                 function($match) {                        global $count;                        global $map;                        return $map[$count  ];                }, $html);echo $result . PHP_EOL;?><div class="clear"></div>
登录后复制
相关标签:
gt li lt
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板