Замена строки внутри строки в PHP - PullRequest
0 голосов
/ 06 декабря 2009

В моем приложении есть строки, которые пользователи могут отправлять через форму, и они могут при желании заменить слова в этой строке заменами, которые они также указывают. Например, если один из моих пользователей ввел эту строку:

I am a user string and I need to be parsed.

И решил заменить and на foo результирующая строка должна быть:

I am a user string foo I need to be parsed.

Мне нужно как-то найти начальную позицию того, что они хотят заменить, заменить его на слово, которое они хотят, а затем связать все вместе.

Может ли кто-нибудь написать это или хотя бы предоставить алгоритм? Мои навыки PHP не совсем соответствуют задаче: (

Спасибо. :)

Ответы [ 3 ]

3 голосов
/ 06 декабря 2009
$result = preg_replace('/\band\b/i', 'foo', $subject);

найдет все вхождения and, где это слово само по себе, и заменит его на foo. \b гарантирует наличие границы слова до и после and.

2 голосов
/ 06 декабря 2009

Читайте по str_replace или для более сложных замен регулярных выражений и preg_replace.

Примеры для обоих:

<?php
$str = 'I am a user string and I need to be parsed.';
echo str_replace( 'and', 'foo', $str ) . "\n";
echo preg_replace( '/and/', 'foo', $str ) . "\n";
?>

В ответ на комментарии к этому ответу обратите внимание, что оба приведенных выше примера заменят каждое вхождение строки поиска (and), даже если оно окажется внутри другого слова.

Чтобы позаботиться об этом, вам нужно либо добавить разделители слов к вызову str_replace (см. Комментарий к примеру), но это будет довольно сложно, если вы захотите позаботиться обо всех распространенных разделителях слов (пробел). , запятые, точки, восклицательные знаки, знаки вопроса и т. д.).

Более простой способ решить эту проблему - использовать силу регулярных выражений и убедиться, что искомая строка поиска не найдена в другом слове. См. Пример Тима Пицкера ниже для возможного решения.

2 голосов
/ 06 декабря 2009

использовать preg_replace . Вам не нужно так много думать об этом, хотя вам придется немного узнать о регулярных выражениях. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...