用单词regex php替换单词

时间:2014-09-07 23:11:50

标签: php regex

我需要能够搜索字符串并替换“我”,“我的”,“我”之类的字词,并用“你”和“你的”等字词替换它们。基本上我需要能够改变主体占有。

实施例

User input: "Can you remind me to feed my dog tonight?"
Response  : "Sure I can remind you to: feed your dog tonight"

“提醒我”是一个命令,所以被忽略,但“我的”应该改为你的。然而,我所拥有的将把每个字符“m”和“y”的集合改为“你的”。因此astronomy之类的字词现在是astronoyour。我不想要的。

public static function userToServer($string){
   $pos = array(' me '=>'you', ' i '=>'you','we'=>'we','us'=>'you','you'=>' i ', ' my '=>'your');
   foreach($pos as $key => $value){
      if(strpos($string, $key) !== false){
          $result = str_replace ($key, $value, $string );
          print_r($result);
          return  $result;
      }
   }
  return null;
}
public static function parse($string, $commands){
  foreach($commands as $c){
     if(stripos($string,$c) !== false){
        $params = explode($c, $string);
        $com[$c] =$params[1];
     }
   }
   if(isset($params)){
     foreach($com as $key => $value){
       if($key ==='remind me to'){
          //$user->addEventToCalender($value);
          //echo $value;
          echo 'Okay, I will remind you to '.String::userToServer($value);
       }
     }
   }
}

使用上述函数的示例输出

Using $_GET['input'] as $input
Original: Will you remind me to secure funds for my business
Response: Okay, I will remind you to secure funds for my byouiness

我确定我必须创建自己的方法来解决这个问题,但我想我会问,因为我知道正则表达式是一个很好的工具,我可能会忽略解决方案。

半工作演示

此演示网址显示了我正在使用的当前代码,并会在答案出来时更新。请随时浏览:)

指向相关字符串类的直接链接:http://api.austinkregel.com/butler/string-class

2 个答案:

答案 0 :(得分:1)

<?php


  function userToServer($string){

      $in=array('#\bcat\b#','#\bdog\b#');
      $out=array('fish','frog');
      $string=preg_replace($in,$out,$string);  
      return $string;
    }


   echo userToServer("cat eat dog but not doge");  //fish eat frog but not doge


?>

答案 1 :(得分:0)

查看PHP string replace match whole word

在该链接中,它会向您展示如何使用preg_replace

您可以使用以下内容:

$phrase = preg_replace('/\bmy\b/i', 'your', $phrase);

此代码未经过测试,您可能需要进行一些更改