2015-08-31 2 views
0
if($_GET["op"]=="replace"){ 
      $str=$_GET["input"]; 
      $pos=$_GET["input2"]; 
      $apos=explode(',',$pos); 
      echo"After replaced:".str_replace($apos[0],$apos[1],$str); 
} 

, когда я дам входному предложению hi this is a good day и дать слово быть заменено, так как is. позвольте другому слову заменить на not.Заменить конкретное слово в предложении с другим словом в PHP

Тогда выход будет: hi thnot not good day.

Как сделать вывод будет hi this not good day

+0

вы должны использовать регулярные выражения для определения того или нет слово является частью другого слова или использует только строковые функции, ищите каждый экземпляр вашего слова поиска и проверяйте предыдущий/следующий символ, чтобы увидеть, является частью другого слова перед заменой по одному. –

+1

, если вход «hi this ...», почему вы взорваетесь на ','? На вашем входе нет '' '. –

+0

$ str содержит предложение. im чтение слова, которое нужно заменить и заменить слово на $ pos. например $ pos будет иметь «is not not» – yureka

ответ

1

Я думаю, вы хотите что-то вроде этого:

preg_replace("/\b(is)\b/", "not", $input_lines); 

Check the code

if($_GET["op"]=="replace"){ 
    $str=$_GET["input"]; 
    $pos=$_GET["input2"]; 
    $apos=explode(',',$pos); 
    echo"After replaced:".preg_replace("/\b(".$apos[0].")\b/", $apos[1], $str) 
} 
+1

Хорошо поймать, что ожидаемая строка вывода не включает 'a', но я предполагаю, что это была ошибка. Если вы просто выполняете прямое совпадение строк, вам не нужно preg_replace, поскольку str_replace будет делать то же самое с меньшими накладными расходами. В идеале вы обнаружите границу слова или начало/конец строки. –

+0

im использование переменной для хранения слов, которые нужно заменить и заменить. Я попробовал preg_replace ("/ $ apos [0] /", $ apos [1], $ str); давая пространство между «/ _ $ pos [0] _ /". но это не сработало. – yureka

+0

Попробуйте этот '' /(".$ apos [0]. ") /" '. Что такое '$ _GET [" input2 "]'? –