Замена своего BB-тега на HTML-ссылку

265
14 августа 2017, 11:41

Помогите составить регулярное выражения для замены тега на ссылку с сохранением информации в теле тега. Есть строчка

Неизменная потертая соломенная шляпа, подаренная ему [character=727]Шанксом[/character], которую он, в свою очередь, получил от [character=4883]Роджера[/character]

Нужно привести строчку в такой вид

Неизменная потертая соломенная шляпа, подаренная ему <a href="https://сайт.ру/character/Шанксом/727/">Шанксом</a>, которую он, в свою очередь, получил от <a href="https://сайт.ру/character/Роджера/4883/">Роджера</a>

Пробую так, получается белиберда на выходе

$description = preg_replace("/[character=[0-9]](.*?)[\/character]/Usi",
    '<a href=\"https://сайт.ру/character/\"$2\"/\"$1\"/\">$2<\/a>',$description);
Answer 1
preg_replace(';\[character=(\d+)\](.+?)\[/character\];i',
    '<a href="https://сайт.ру/character/$2/$1/">$2</a>', $description);

https://regex101.com/r/loAkHN/2

Чтобы применять обратные слэши по минимуму (для экранирования), используются одинарные кавычки — внутри них не работают спец. последовательности, и таким образом мы можем спокойно записать обратный слэш в строку. Кроме того, в качестве ограничителей регулярки применяются точки с запятой по краям. Единственное, что пришлось заэкранировать, — квадратные скобки, чтобы движок регулярных выражений PCRE не воспринимал бы их как группу символов.

Answer 2

Ещё вариант:

$string = 'Неизменная потертая соломенная шляпа, подаренная ему [character=727]Шанксом[/character], которую он, в свою очередь, получил от [character=4883]Роджера[/character]';
$pattern = '~\[(character)=(\d+)](\w+)\[/\1]~u';
$replace = '<a href="https://сайт.ру/$1/$3/$2/">$3</a>';
echo preg_replace($pattern, $replace, $string);
READ ALSO
OpenCart | Ошибка 500 в категориях и товарах

OpenCart | Ошибка 500 в категориях и товарах

Здравствуйте, столкнулся с такой проблемой, ошибка 500 на страницах категорий и товаров, на остальных страницах проблема не наблюдается, как...

269
Где нету запятой?

Где нету запятой?

Выдает такую ошибку:

214
команда cURL в PHP cURL

команда cURL в PHP cURL

разбираясь с API IPFS, захотелось написать свои шорткаты для PHP с использованием cURL, однако, до сих пор не могу совладать с /add

216