Заменить второе вхождение слова в строку и вернуть всю строку

$string = 'Привет. Хуман живет на земле. Хумен любит кошек.';

Теперь я хочу заменить 2-е хуманское слово на Человек, и результат должен быть следующим:

Привет там. Хуман живет на земле. Человек любит кошек.

Вот что я сделал до сих пор...:

<?php

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

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

?>

Но он возвращает: Привет там. Человек живет на земле. Человек любит кошек.

Hoomans или Hooman?
nice_dev 21.06.2019 09:19

Мне не удалось проверить то, что я написал, работает или нет? Вы подтвердили ответ, а затем отменили его.

Dylan Kas 21.06.2019 09:49
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
141
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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);

Какова длина вашей строки?

Dylan Kas 21.06.2019 10:04

Если я напишу Hooman Hooman Hooman в несколько строк в $string, это вообще не сработает. Но если я напишу Hooman Hooman Hooman одной строкой, получится неплохо.

Peter 21.06.2019 10:10

Я использовал $string = trim(preg_replace('/\s\s+/', ' ', $string)); чтобы удалить линии, и теперь он работает. Спасибо за ваше время :)

Peter 21.06.2019 10:14

Этот код предполагает, что в строке есть хотя бы один 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-го появления.

Peter 21.06.2019 10:00
Привет там. Хуман живет на земле. Хуман любит кошек. Хуман Хуман Хуман меняется на Привет там. Хуман живет на земле. Человек любит кошек. Человек Человек Человек
Peter 21.06.2019 10:01

Другие вопросы по теме