如何仅替换 PHP 中字符串末尾的特定单词?

How to replace only a specific word from the end of the string in PHP?

我有两个这样的字符串变量

$string1 = 'this is my house';
$string2 = 'this house is mine';

仅当 'house' 是字符串的最后一个单词时,我需要一种方法将 'house' 替换为 'dog'。

比如这段代码

function replace($input_string, $search_string, $replace_string){
   //do the magic here!
}
$string1 = replace($string1, 'house','dog');
$string2 = replace($string2, 'house','dog');

echo $string1;
echo $string2;

希望 return 将...

this is my dog
this house is mine

您可能正在寻找这样的东西:

function replace($str,$from,$to){
    $str = preg_replace('~('.preg_quote($from).')$~',$to,$str);
    return $str;
}

请注意文档说不要在 preg_replace 中使用 preg_quote,但老实说我不知道​​为什么。如果你知道,请评论。

根据您提到的条件,您可以执行如下操作。找到字数,然后检查字符串中是否有 home 可用,然后找到 house 的索引。那么您可以检查该索引是否与单词数组的最后一个索引匹配 (count($wordArray)) - 1)

$string1 = 'this is my house';
    $string2 = 'this house is mine';
    $wordArray = explode(' ', $string1); // make the array with words
    //check the conditions you want 
    if (in_array('house', $wordArray) && (array_search('house', $wordArray) == (count($wordArray)) - 1)) {
        $string1 = str_replace('house', 'dog', $string1);
    }
    echo $string1;