$string = 'Привет. Хуман живет на земле. Хумен любит кошек.';
Теперь я хочу заменить 2-е хуманское слово на Человек, и результат должен быть следующим:
Привет там. Хуман живет на земле. Человек любит кошек.
Вот что я сделал до сих пор...:
<?php
$string = 'Hellow there. Hooman lives on earth. Hooman loves cats.';
echo preg_replace('/Hooman/', 'Human', $string, 2);
?>
Но он возвращает: Привет там. Человек живет на земле. Человек любит кошек.
Мне не удалось проверить то, что я написал, работает или нет? Вы подтвердили ответ, а затем отменили его.
Вы можете использовать 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);
Какова длина вашей строки?
Если я напишу Hooman Hooman Hooman в несколько строк в $string, это вообще не сработает. Но если я напишу Hooman Hooman Hooman одной строкой, получится неплохо.
Я использовал $string = trim(preg_replace('/\s\s+/', ' ', $string)); чтобы удалить линии, и теперь он работает. Спасибо за ваше время :)
Этот код предполагает, что в строке есть хотя бы один 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)));
Но он также заменяет всех хуманов после 2-го появления.
Hoomans
илиHooman
?