PHP Preg_match несколько элементов в одной строке?

0

В настоящее время я вставляю какой-то основной текст в БД. Это простой текст, но пользователи также хотят добавлять рабочие ссылки. Чтобы сохранить массовые изменения, я делаю эти изменения, используя всплывающее окно, которое вставляет их ссылку в следующем формате:

[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]

Любая помощь будет очень признательна !!!

Спасибо, Кейн

  • 0
    У вас есть попытка?
  • 0
    Да, я использовал этот ... code /[a](.*)[/a]/ code Но он вернет следующее: code 1 => google.com [/ a] как дела? Хорошо. [a] yahoo.com [/ a] Спасибо за предложение. [a] code bing.com Так что он получал только внешние «[a]» и «[/ a]»
Показать ещё 1 комментарий
Теги:
preg-match
preg-match-all

2 ответа

1
Лучший ответ

Использовать это:

$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>;
0

Это должно работать:

$str = preg_replace('~\[a](.*?)\[/a]~si', "<a href='$1'>$1</a>", $str);
  • 0
    Вы избежали неправильной квадратной скобки: [ нужно убежать, ] не нужно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню