Arqin
Профессор
- Регистрация
- 17 Мар 2009
- Сообщения
- 185
- Реакции
- 37
- Автор темы
- #1
Столкнулся с такой задачей. Необходимо заменять в строке определенный набор символов на элемент массива, ключем которого является этот набор символов.
Для более точного понимания приведу пример:
есть строка и массив:
на выходе нам небходимо получить:
вот.
Заменить на какое-то конкретное слово не проблема. Просто беру паттерн
И меняю preg_replace`ом. Вся загвоздка как подставить значение из массива.
Не хотелось бы в цикле каждый раз по массиву гулять, как встретится слово. А знаний как это сделать одним preg_replace к сожалению не хватает. Может кто подскажет с какой стороны к этому подойти?
P.S.: Думал использовать preg_replace_callback, но не разобрался как ее втюхнуть в класс...
Для более точного понимания приведу пример:
есть строка и массив:
PHP:
$string = 'nkudfhsksd lfsdhfosdfklsdf fsdkfhsdkjfhsdk
###Home######Back### lfksdhgksdfhgdfk ###Home# fjsdgfsdjf
&*(^*^(&^(*& dnksdjhsdkjfnsdk dkgvfkvfn
fkdvdfkvnhdfvkldfjvldfvndf
###Hello### dklfghdfoghdf
vejrgftweruifhnsd cdfugdfjkdfjkl';
$arr = array ('Home' => 'Домой',
'Back' => 'Назад',
'Hello' => 'Привет');
PHP:
$transl_str ='nkudfhsksd lfsdhfosdfklsdf
fsdkfhsdkjfhsdk ДомойНазад lfksdhgksdfhgdfk
###Home# fjsdgfsdjf &*(^*^(&^(*&
dnksdjhsdkjfnsdk dkgvfkvfn fkdvdfkvnhdfvkldfjvldfvndf
Привет dklfghdfoghdf vejrgftweruifhnsd cdfugdfjkdfjkl';;
Заменить на какое-то конкретное слово не проблема. Просто беру паттерн
PHP:
$pattern = '/###[a-zA-Z]+###/';
Не хотелось бы в цикле каждый раз по массиву гулять, как встретится слово. А знаний как это сделать одним preg_replace к сожалению не хватает. Может кто подскажет с какой стороны к этому подойти?
P.S.: Думал использовать preg_replace_callback, но не разобрался как ее втюхнуть в класс...