求一正则表达式相关代码

lyrebird 2006-06-17 08:43:30
现急需一段代码,功能为:搜索一段文字中前两个符合“$+数字+$”(如$12345$)格式的字串(若文字中有多个符合此规则的字串,则只取前两个)。取出后,对符合条件的字串进行一些处理后要将处理的结果字符串替换原文字中的该字串。

例如:
原文字:今天天气真好$12$,我们出去玩$34$。明天天气就不见得好了$34$。
此时需要取出$12$和$34$两个字串,并根据规则,把$12$替换成“啊”,$34$替换成“吧”

结果就是:今天天气真好啊,我们出去玩吧。明天天气就不见得好了$34$。

不知道这样的代码在PHP中应该如何实现,拜托各位大侠们帮帮忙啊~~~
...全文
177 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ymanh 2006-06-18
  • 打赏
  • 举报
回复
preg_replace 后面加多个参数,想几个就几个
ymanh 2006-06-18
  • 打赏
  • 举报
回复
function change_text($text,$a,$b)
{
preg_match_all("/\/(\d+)\//",$text,$n_arr);

$_n_arr = array_unique($n_arr[1]);

$n_arr_1 = $_n_arr[0];
$n_arr_2 = $_n_arr[1];

$text = preg_replace("/\/{$n_arr_1}\//",$a,$text,1);
$text = preg_replace("/\/{$n_arr_2}\//",$b,$text,1);

return $text;
}

echo (change_text($text,'啊','吧'));

?>
lyrebird 2006-06-18
  • 打赏
  • 举报
回复
可是我是想只替换第一次的,不知道有没有办法……
ymanh 2006-06-18
  • 打赏
  • 举报
回复
是全部
baofeng0113 2006-06-18
  • 打赏
  • 举报
回复
不过我怕出错,写了循环的。。。。。

以前试过,应该可以的
baofeng0113 2006-06-18
  • 打赏
  • 举报
回复
replace是全部替换,我才做过
lyrebird 2006-06-18
  • 打赏
  • 举报
回复
回楼上,是不是因为$是正则的保留字符。呵呵,我还想请问,preg_replace是把所有文字中的符合条件的字串都替换,还是只替换第一个呢
ymanh 2006-06-18
  • 打赏
  • 举报
回复
<?php
$text = "今天天气真好/12/,我们出去玩/34/。明天天气就不见得好了/34/。";


function change_text($text,$a,$b)
{
preg_match_all("/\/(\d+)\//",$text,$n_arr);

$n_arr_1 = $n_arr[1][0];
$n_arr_2 = $n_arr[1][1];

$text = preg_replace("/\/{$n_arr_1}\//",$a,$text);
$text = preg_replace("/\/{$n_arr_2}\//",$b,$text);

return $text;
}

echo (change_text($text,'啊','吧'));

?>

呵呵,用$12$ 这个不知道为什么不行,用了/12/这种就可以了

21,886

社区成员

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

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