最近要做一个同义词替换的功能,因为是同义词,所以最好是能双向替换,比如“拜会”和“拜见”,在字符串中出现任何一个都要能替换成另一个。通常用str_replace只能单向替换,不能实现双向替换。尝试了一下把同义词做成数组再用str_replace替换,结果却不正确。$find = array("拜会","拜见");
$replace = array("拜见","拜会");
$arr = array("拜会和拜见");
str_replace($find,$replace,$arr);结果是:拜会和拜会。问题是怎么样才能使最后的替换结果是“拜见和拜会”?

解决方案 »

  1.   

    <?php
    $find = array("拜会","拜见", "###", "@@@");//###\@@@得保证全文唯一
    $replace = array("拜###见","拜@@@会", "", "");$arr = array("拜会和拜见");
    print_r(str_replace($find,$replace,$arr));
    ?>
      

  2.   

    改动一下$find = array("拜会","拜见");
    $replace = array("拜见","拜会");
    $str = "拜会和拜见";
    echo strtr($str, array_combine($find, $replace));