PHP Regex сопоставляет значение между двумя словами и заменяет

Привет всем, чего я хочу добиться с помощью php, так это найти значение между двумя словами (для всех случаев) и заменить его другой строкой, а затем удалить слова вокруг значения. Вот пример

$mysting = "[link]http://website.com[/link] bla bla bla bla [link]http://google.com[/link]";

Чего я хочу добиться, так это сделать эту строку:

$newString = "<a href='http://website.com'>http://website.com</a> bla bla bla bla <a href='http://google.com'>http://google.com</a>";

Как я могу это сделать? Это то, что у меня есть на данный момент

preg_match("/(?<=[link])(.*)(?=[/link])/", $formData ,$match);

Заранее спасибо!!


person Branko    schedule 21.02.2017    source источник
comment
Сделайте это не жадным   -  person anubhava    schedule 21.02.2017


Ответы (1)


Используйте функцию preg_replace:

$mysting = "[link]http://website.com[/link] bla bla bla bla [link]http://google.com[/link]";
$new_str = preg_replace("/\[link\]([^\[]+)\[\/link\]/", "<a href='$1'>$1</a>", $mysting);

print_r($new_str);

Вывод (как исходный код):

<a href='http://website.com'>http://website.com</a> bla bla bla bla <a href='http://google.com'>http://google.com</a>
person RomanPerekhrest    schedule 21.02.2017