Добавит текст к ссылке php

Подскажите пожалуйста, есть данная переменная

$description = "текст https://google.com текст";

Как я могу ссылку взять в тег [link] что бы получилось так:

$description = "текст [link]https://google.com[/link] текст";

Ответы (3 шт):

Автор решения: Denis640Kb

Если на php, то простым образом можно так(Чтобы не писать регулярные выражения, так как ссылка может быть разной):

$description = "текст https://google.com текст";

$new = explode(' ', $description);
$newline = '"'.$new[0].' [link]'.$new[1].'[link] '.$new[2].'"';

print_r($newline);

Вариант с регулярным выражением.

$description = "текст https://google.com текст";

$new = preg_replace("^((ftp|http|https):\/\/)?(www\.)?([A-Za-zА-Яа-я0-9]{1}[A-Za-zА-Яа-я0-9\-]*\.?)*\.{1}[A-Za-zА-Яа-я0-9-]{2,8}(\/([\w#!:.?+=&%@!\-\/])*)?^", '[link]$0[link]', $description);
print_r($new);
→ Ссылка
Автор решения: Anton Shchyrov
$description = "текст https://google.com текст";
$description = preg_replace('~(https?://.*?)(\s|$)~', '[link]$1[/link]$2', $description);
var_dump($description);

Ищем начало ссылки в виде https:// или http://. А конец - первый пробел после начала или конец строки

→ Ссылка
Автор решения: Shalam

Можно попробовать используя только explode:

$description = "текст https://google.com текст";
$one = explode('https://', $description, 1); // [0]:'текст ' [1]:'google.com текст'
if (empty($one)) {
    echo 'не найдено';
} else {
    $two = explode(' ', $one[1], 1); // [0]:'google.com' [1]:'текст'
    $result = $one[0].'[link]https://'.$two[0].'[/link] '.two[1];
}
→ Ссылка