<?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/这种就可以了

解决方案 »

  1.   

    回楼上,是不是因为$是正则的保留字符。呵呵,我还想请问,preg_replace是把所有文字中的符合条件的字串都替换,还是只替换第一个呢
      

  2.   

    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,'啊','吧'));?>
      

  3.   

    preg_replace 后面加多个参数,想几个就几个