Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Замена по маске


Автор: rodendron 3.2.2006, 01:31
Всем доброй ночи.
Подскажите пожалуйста как произвести следующую замену.
Имеется строка.
My name is Jack.

Ввожу в форму поиска "My name", получаю "<b>My name</b> is Jack.".
Ввожу name, получаю "My <b>name</b> is Jack".
Так я умею делать с помощью обычной замены.

А вот как реализовать следующее - ввожу "name Jack", следовательно получаю:
"My <b>name</b> is <b>Jack</b>".
То есть когда мне надо заменить фразу в строке, но которая идет не по порядку.
Заранее благодарен за помощь в решении данного вопроса.

Автор: Ciber SLasH 3.2.2006, 01:46
Код

$str = 'name Jack';
echo preg_replace("/^name (\w+)$/", "My <b>name</b> is <b>$1</b>", $str);

Автор: rodendron 7.2.2006, 11:17
Не совсем правильно я так понял...
Строка же тоже может динамически меняться, а у тебя зашито My <b>name</b> is <b>.
Или я не прав?

Автор: Akina 7.2.2006, 11:57
Гм... а кто мешает пошинковать шаблон на слова и выполнить замену несколько раз?

"name Jack" -> "name" "Jack"

My name is Jack. ("name") -> My <b>name</b> is Jack.
My <b>name</b> is Jack. ("Jack") -> My <b>name</b> is <b>Jack</b>.

?

Автор: smartov 7.2.2006, 12:02
Код

//исходная строка
$source = 'My name is Jack';

//пришло из формы
$get = "name Jack";

$getArray = explode(" ", $get);

$result = $source;

foreach ($getArray as $item)
{
    $result = str_replace($item, '<b>'.$item.'</b>', $result);
} 

echo $result;



Только смотри сразу str_replace заменит все вхождения слова Jack например на <b>Jack</b>
Если тебе надо заменить только одно первое или еще как-нить - смотри хелп по функции http://www.php.net/manual/ru/function.str-replace.php или http://ua2.php.net/manual/ru/function.preg-replace.php.

Автор: rodendron 7.2.2006, 13:26
smartov
Супер! Спасибо огромное!
Сейчас осталось только найти функцию замены, нечувствительную к регистру. А это эта регистр не понимает smile
Добавлено @ 13:39
Поставил eregi_replace.
Вроде работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)