Заменить preg_replace bbcode на html
Помогите, я пытаюсь конвертировать BBcode в HTML-код, и я получаю эту ошибку
BB-код [url=link][attach]1[/attach][/url]
SCREAM: Error suppression ignored for( ! ) Warning: preg_replace(): Unknown modifier '/'
$content = $getThread['message'];
$bbUrl = '/\[url=(http|https|ftp)://{1}([a-zA-Z0-9/%@?:#&+._=-]*)\](.*?)\[/url\]/gixsm';
$htmlUrl = '<a href="{$1}://{$2}" target="_blank">{$3}</a>';
$atable = $thread->get_atable($tid);
$content = preg_replace($bbUrl, $htmlUrl, $content);
после того, как URL будет сделан, преобразует [attach]1[/attach] снова, используя
$bbAttachment = 'etc...';
$htmlAttachment = 'etc...';
$content = preg_replace($bbAttachment, $htmlAttachment , $content);
Это правильный способ сделать?
Ценю за помощь.
1 ответ
Решение
У вас есть ошибка в вашем регулярном выражении. Вам нужно правильное экранирование для символа '/'.
изменить это
$bbUrl = '/\[url=(http|https|ftp)://{1}([a-zA-Z0-9/%@?:#&+._=-]*)\](.*?)\[/url\]/gixsm';
к этому
$bbUrl = '/\[url=(http|https|ftp):\/\/([a-zA-Z0-9\/%@?:#&+._=-]+)\](.+?)\[\/url\]/gixsm';
Вы также должны изменить *
в +
потому что я предполагаю, что вы не хотите анализировать URL, которые могут быть пустыми.