@DCDen

Как работать с preg_replace_callback в PHP?

<?
	// Может быть разное значение
	$value = 'Parametr 1|Parametr 2|Parametr 3';

	$explode = explode('|', $value);

	// Может быть разное значение
	$template = '<em>[param:0]</em>';

	$out = preg_replace_callback(
		'/\[param:(\d+)\]/i',
		create_function(
			'$m',
			'return $explode[$m[1]];'
		),
		$template
	);
	
	echo $out;
?>


В $out пусто, что я делаю не так?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
eudj1n
@eudj1n
Воспользуйтесь анонимной функцией в качестве каллбэка:

// Может быть разное значение
$value = 'Parametr 1|Parametr 2|Parametr 3';

$explode = explode('|', $value);

// Может быть разное значение
$template = '<em>[param:0]</em>';

$out = preg_replace_callback(
    '/\[param:(\d+)\]/i',
    function($data) use($explode){
        return $explode[(int)$data[1]];
    },
    $template
);

echo $out;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы