В настоящее время я вставляю какой-то основной текст в БД. Это простой текст, но пользователи также хотят добавлять рабочие ссылки. Чтобы сохранить массовые изменения, я делаю эти изменения, используя всплывающее окно, которое вставляет их ссылку в следующем формате:
[a]http://www.google.com[/a]
Каждый текст тела может содержать более одной ссылки.
Когда это отображается на соответствующей веб-странице, ссылки будут меняться в стандартный формат html:
<a href="http://google.com">http://www.google.com</a>
Кажется, я не могу настроить preg_match, чтобы заставить это делать это несколько раз в строке (см. Пример ниже):
hello world [a]http://google.com[/a] how are you?
Ok. [a]http://yahoo.com[/a] Thanks for asing. [a]http://bing.com[/a]
Любая помощь будет очень признательна !!!
Спасибо, Кейн
Использовать это:
$str = "[a]http://www.google.com[/a] xy [a]http://www.google.com[/a]";
$str = preg_replace("/\[a\](.*)\[\/a\]/Usi", "<a href=\"\\1\">\\1</a>", $str);
echo $str;
Вывод:
<a href="http://www.google.com">http://www.google.com</a> xy <a href="http://www.google.com">http://www.google.com</a>;
Это должно работать:
$str = preg_replace('~\[a](.*?)\[/a]~si', "<a href='$1'>$1</a>", $str);
[
нужно убежать, ]
не нужно.
code
/[a](.*)[/a]/code
Но он вернет следующее:code
1 => google.com [/ a] как дела? Хорошо. [a] yahoo.com [/ a] Спасибо за предложение. [a]code
bing.com Так что он получал только внешние «[a]» и «[/ a]»