preg_replace问题求解

edisonli 2012-08-12 02:44:27
我又一个字符串:
$html = '<ul><li>《mainGood》</li><li>《subGood》《subGood》</li></ul>';//《mainGood》《subGood》个数不定

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

我本来想用回调函数的方法替换《mainGood》为1,第一个《subGood》为2,第三个《subGood》为3,依次类推,我本来想在回调函数中获取到当前替换的是第几个,然后确定替换内容。但是在回调函数中不知道该怎么写了,请高手帮下忙。
...全文
101 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
edisonli 2012-08-12
  • 打赏
  • 举报
回复
楼上两位谢了,都解决了我的问题
qq120848369 2012-08-12
  • 打赏
  • 举报
回复
[liangdong@bb-browser-test00.vm.baidu.com php_project]$ php main.php 
<ul><li>a</li><li>bc</li></ul>
[liangdong@bb-browser-test00.vm.baidu.com 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;
?>
xuzuning 2012-08-12
  • 打赏
  • 举报
回复
$num_mainGood = $num_subGood = 0;
echo preg_replace_callback("/(《mainGood》)|(《subGood》)/is", '回调函数', $html);

function 回调函数($r) {
global $num_mainGood, $num_subGood;
if($r[1]) $num_mainGood++;
if($r[2]) $num_subGood++;
//以下写返回内容的代码

}
代码如诗 2012-08-12
  • 打赏
  • 举报
回复
是这个意思么?
<?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>

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧