替换字符串中单词的第二次出现并返回整个字符串

时间:2019-06-21 07:12:33

标签: php

$ string ='在那儿帮助。霍曼生活在地球上。霍曼爱猫。'

现在,我想用 Human 代替第二霍曼单词,结果应如下:

在那里。霍曼生活在地球上。人类喜欢猫。

这是我到目前为止所做的...:

<?php

$string = 'Hellow there. Hooman lives on earth. Hooman loves cats.';

echo preg_replace('/Hooman/', 'Human', $string, 2);

?>

但是它返回:在那里。人类生活在地球上。人类喜欢猫。

2 个答案:

答案 0 :(得分:1)

您可以使用preg_replace

function str_replace_n($search, $replace, $subject, $occurrence)
{
    $search = preg_quote($search);
    return preg_replace("/^((?:(?:.*?$search){".--$occurrence."}.*?))$search/", "$1$replace", $subject);
}

echo str_replace_n('Hooman','Human',$string, 2);

答案 1 :(得分:1)

此代码假定字符串中至少有一个Hooman。

找到Hoomans位置并将其子字符串化,然后在字符串的第二部分进行替换。

$find = "Hooman";
$str = 'Hellow there. Hooman lives on earth. Hooman loves cats.';

$pos = strpos($str, $find);

echo substr($str, 0, $pos+strlen($find)) . str_replace($find, "Human", substr($str, $pos+strlen($find)));