<?php
$str = '@!#$@# aa 42341 aaa @!#$!#@';
$pp['aaa'] = 'cc';
$pp['aa'] = 'bb';foreach ($pp as $key => $value) {
$key       = '/'.$key.'/';
$str = preg_replace($key, $value, $str);
}
print $str;
?>
aaa包含aa,所以要把aaa写在前面,先替换aaa。

解决方案 »

  1.   

    对呀。你可样把aaa先给替换的。也可以加判断了。如果是aaa就变成cc
    如果只是aa就变成bb。
      

  2.   

    <?php
    $str = '@!#$@# aa 42341 aaa @!#$!#@';
    $pp['aa'] = 'bb';
    $pp['aaa'] = 'cc';
    foreach ($pp as $key => $value) {
    $key = '/[\s]'.$key.'[\s]/';
    $str = preg_replace($key, $value, $str);
    }
    print $str;
    ?>
      

  3.   

    uGain(幽亙) :$str = '@!#$@# aa 42341 aaa@!#$!#@';
    不好意思,我是为了明显才放上两个空格的
    谢谢,后面跟的是(除了字母,数字,和下话线)什么都可以的
      

  4.   

    $str = '@!#$@# aa 42341 aaa@!#$!#@';
    $pp['aa'] = 'bb';
    $pp['aaa'] = 'cc';
    foreach ($pp as $key => $value) {
            $key       = '/\b'.$key.'\b/';
            $str = preg_replace($key, $value, $str);
    }
    print $str;