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, но не разобрался как ее втюхнуть в класс...