2015-02-19 5 views
0

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

[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

У вас есть попытка? – AbraCadaver

+0

Да, я использовал этот ... 'code'/\ [а \] \ [/ а \] /' code' Но было бы вернуть следующее (*.): 'code'1 \t => \t http://google.com [/ a] как дела? ОК. [a] http://yahoo.com [/ a] Спасибо за понимание. [a] http: // bing.com'code' Так что это было только получение снаружи «[a]» и «[/ a]» –

+0

Извините. Непросто читать. **/[a] (. *) [/ a]/** –

ответ

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

Вы избежали неправильной квадратной скобки: '' 'нужно экранировать,' '' не нужно. –

Смежные вопросы