Проблема:
Распознавание и преобразование URL-адресов из текста, введенного пользователями, как из bbcodes, так и из простого текста.
Поскольку могут быть пользователи, которые используют функции bbcode, и пользователи, которые не't.
Пример текста, который пользователь может ввести (на моем самодельном форуме):
Привет, я - Павел.
Приходите в гостиmy Club " PAUL SOCCER CLUB ".
Взгляните на это:
www.notrealwebsite.com/team.php?tmid=1
И не забудьтечтобы посетить мой сайт [url] www.example.com [/ url]
Мне нужно перехватить обе эти ссылки и превратить их в интерактивные ссылки.
Возможно, чтобы они указывали за мой домен(даже если они написаны без протокола).
Как только пользователи вводят свой текст, я сохраняю его в моей базе данных MySQLi, после обработки его с помощью следующего кода:
...
$new_post=$_POST[text];
$new_post = str_replace("
","<br>",$new_post);
$new_post=addslashes($new_post);
$new_post=mysqli_real_escape_string($dbconnection3, $new_post);
...
Затем, чтобы показать его на форуме, я получаю текст из БД и обрабатываю его с помощью этого файла (с именем textpost.php ), который делает его читаемым:
<?
$textpost=str_replace("[quote]", "<div id='quote'><hr class='quote'><font size='1'>", "$textpost");
$textpost=str_replace("[/quote]", "</font><br><hr class='quote'></div><div id='clear'></div><br>", "$textpost");
$textpost=str_replace("[b]", "<b>", "$textpost");
$textpost=str_replace("[/b]", "</b>", "$textpost");
$textpost=str_replace("[u]", "<u>", "$textpost");
$textpost=str_replace("[/u]", "</u>", "$textpost");
$textpost=str_replace("[i]", "<i>", "$textpost");
$textpost=str_replace("[/i]", "</i>", "$textpost");
$textpost=str_replace("[s]", "<s>", "$textpost");
$textpost=str_replace("[/s]", "</s>", "$textpost");
$pattern = '~\[img(?|=[\'"]?([^]"\']+)[\'"]?]([^[]+)|](([^[]+)))\[/img]~';
$replacement = '<img src="$1" title="$2" style="max-width:400px; max-height:400px;"><br><font size="1">$2</font>';
$textpost = preg_replace($pattern, $replacement, $textpost);
$pattern = '~\[url(?|=[\'"]?([^]"\']+)[\'"]?]([^[]+)|](([^[]+)))\[/url]~';
$replacement = '<a href="$1" title="$2" target="blank">$2</a>';
$textpost = preg_replace($pattern, $replacement, $textpost);
$pattern = '#(?<![>/"])(((http|https|ftp)://)?www[a-zA-Z0-9\-_\.]+)#im';
$replacement = '<a href="$1" title="$1" target="blank">$1</a>';
$textpost = preg_replace($pattern, $replacement, $textpost);
?>
Мне нужна помощь, чтобы правильно определить URL-адреса, введенные как между [url] [/ url], так и внешними тегами bbcode (особенно если они записаны не в 1-й строке простого текста) **.