Q:

preg_replace по шаблону

Всем привет. Столкнулся с такой проблемой:
Что есть:
$url = 'mailto:test@email.com';
$string = 'Нажмите на [[reply_link|эту ссылку]] для ответа.';

Нужно из этой строки получить следующую:
$string = 'Нажмите на <a href="mailto:test@email.com">эту ссылку</a> для ответа.';

href должен браться из переменной. Текст ссылки должен замениться из шаблона (после |). Как можно это реализовать? Заранее спасибо. 

A:

Текст ссылки должен замениться из шаблона (после |). Как можно это реализовать?

Нужно построить шаблон, который будет соответствовать всей подстроке [[reply_link|эту ссылку]], а для получения текста после символа | использовать подмаску (сохраняющие скобки) с последующей подстановкой найденного совпадения в html-тег <a>$1</a>:
$url = 'mailto:test@email.com';
$str = 'Нажмите на [[reply_link|эту ссылку]] для ответа.';

$patt = '~\[\[[^|]+\|([^]]+)]]~u';
$repl = '<a href="' . $url . '">$1</a>';

echo preg_replace($patt, $repl, $str);

Результат:
Нажмите на <a href="mailto:test@email.com">эту ссылку</a> для ответа.

