Посоветуйте по регуляркам

Статус
В этой теме нельзя размещать новые ответы.

Arqin

Профессор
Регистрация
17 Мар 2009
Сообщения
185
Реакции
37
Столкнулся с такой задачей. Необходимо заменять в строке определенный набор символов на элемент массива, ключем которого является этот набор символов.
Для более точного понимания приведу пример:
есть строка и массив:
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`ом. Вся загвоздка как подставить значение из массива.
Не хотелось бы в цикле каждый раз по массиву гулять, как встретится слово. А знаний как это сделать одним preg_replace к сожалению не хватает. Может кто подскажет с какой стороны к этому подойти?
P.S.: Думал использовать preg_replace_callback, но не разобрался как ее втюхнуть в класс...
 
preg_replace может принемать и массивы на входе
PHP:
$arr = array ('Домой','Назад','Привет');
$pattern = array ('/###Home###/','/###Back###/','/###Hello###/');  
echo preg_replace($pattern, $arr, $string);
 
Хмм... спасибо! Очень интересный факт! Не знал =(
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху