<?php
$ar[1] = "1234";
$v = preg_replace("/\[item\](\d)\[\/item\]/","\$ar[\\1]","[item]1[/item]");
eval("\$k=\"$v\";");
echo $k;
?>

解决方案 »

  1.   

    好像还可以这样。
    你建立一个数组,
    索引是“源字符串”,值则是“目标字符串”
    比如这样,
    function conversions($arg)
    {
    $trans = array(":)" => "<img src=\"../img/emoticons/regular_smile.gif\" width=\"19\" height=\"19\">",
         ":(" => "<img src=\"../img/emoticons/sad_smile.gif\" width=\"19\" height=\"19\">",
     ":'(" => "<img src=\"../img/emoticons/cry_smile.gif\" width=\"19\" height=\"19\">",
     ":@" => "<img src=\"../img/emoticons/angry_smile.gif\" width=\"19\" height=\"19\">");//中间省略了很多 
    $result = strtr($arg, $trans);
    return $result;
       }
      

  2.   

    可一次性替换所有形如[item]1[/item]的内容,当然你先要定义好arrayA
    例:
    <?php
    $ar = array("1234","abc","awe3","sdf");
    $s = "[item]1[/item]<br>[item]0[/item]-dsfg<br>[item]2[/item][item]3[/item]";
    $v = preg_replace("/\[item\](\d+)\[\/item\]/","\$ar[\\1]",$s);
    eval("\$k=\"$v\";");
    echo $k;
    ?>
      

  3.   

    linuxx的好像不能替换我动态生成的数组arrayA中的内容吧?唠叨的可以实现,不过希望能稍微详细地解释一下好吗?我会马上结贴的
      

  4.   

    <?php
    $ar = array("1234","abc","awe3","sdf"); // 定义数组
    $s = "[item]1[/item]<br>[item]0[/item]-dsfg<br>[item]2[/item][item]3[/item]"; // 待替换的串
    $v = preg_replace("/\[item\](\d+)\[\/item\]/","\$ar[\\1]",$s); // 替换形如"[item]i[/item]"的部分为'$ar[i]'
    // 按例,将$s变为“$ar[1]<br>$ar[0]-dsfg<br>$ar[2]$ar[3]”
    eval("\$k=\"$v\";"); // 宏替换,将真实的值代入,赋予变量$k
    echo $k;
    ?>
      

  5.   

    eval这句不太明白:
    替换出来的结果应该是这样吧?
    $k="$v";为什么有的地方要用"\"来转义,有的就不要?(比如$v前面为什么没有\)?
      

  6.   

    是的,eval("\$k=\"$v\";"); 等价于 $k="$v";
    在什么地方要转义,要视情况而定比如有 $k='aa',在 eval("\$k=\"$v\";"); 中
    $k 不转义的话,则就会有 aa="$v"; 显然是错误的
    $v 没有转义的原因是出于书写的方便,因为传递给eval的是一个php的语句
    按正常习惯书写就可以了。只是要注意到是以串的形式书写的。
    写成 eval('$k = $v;'); 也是一样的。