preg_replace по шаблону

155
23 февраля 2018, 18:55

Всем привет. Столкнулся с такой проблемой: Что есть:

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

Нужно из этой строки получить следующую:

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

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

Answer 1

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

Нужно построить шаблон, который будет соответствовать всей подстроке [[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> для ответа.
READ ALSO
Премудрости объявление указателя в c++

Премудрости объявление указателя в c++

Здравствуйте, недавно начал изучения c++ и остановился на указателяхЧитал про них на разных источниках и везде объявление указателя выглядит...

213
Работа с COM-портом в C++

Работа с COM-портом в C++

В сети есть куча мануалов и примеров по работе с портом в C++, но у меня как-то неохотно они работаютИзначально юзал QSerialPort, все было прекрасно...

232
Вывод всех значений вектора

Вывод всех значений вектора

Необходимо в цикле вывести все значения вектора

171
Как реализуется iтая переменная в C++

Как реализуется iтая переменная в C++

Допустим у меня серия уравнений, и выходит так, x(2) это x(1) - n (и далее это тоже продолжается)Можно ли как-то задать один раз переменную x, чтобы...

218