Заменить 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, которые могут быть пустыми.

Другие вопросы по тегам