2015-02-11 6 views
0

Я знаю, что есть другие ответы на подобные вопросы, однако я уже пробовал примеры кода, которые я ранее нашел, и не могу заставить их работать.Найти ссылку в строке и изменить на HTML-ссылку

Я хочу, чтобы найти, содержит ли строка URL (начиная с http или https), а затем преобразовать эту ссылку в реальную HTML ссылку, добавив <a> тегов вокруг него.

Это код, у меня есть: "да"

$text = 'Yummy brunch http://t.co/5AlmSPZeRd'; 

    if ((strpos($text,'http') !== false)) { 
     echo "yep!"; 
     preg_replace('!(http|https)(s)?:\/\/[a-zA-Z0-9.?%=&_/]+!', "<a href=\"\\0\">\\0</a>", $text); 
    } 

В то время как мой сообщение (показывает, что оператор if верен), preg_replace не возникает. Что я делаю не так?

+1

Кажется, работает хорошо для меня. В других новостях я понятия не имел »! может использоваться как разделитель. –

+1

Вы 'echo'' preg_replace'? –

+1

Andrei P .: http://php.net/regexp.reference.delimiters - у вас действительно есть широкий спектр символов, которые вы можете использовать. – rinukkusu

ответ

2

Как насчет:

$text = 'Yummy brunch http://t.co/5AlmSPZeRd'; 

if ((strpos($text,'http') !== false)) { 
    echo "yep!"; 
    $text = preg_replace('!https?://\S+!', "<a href=\"$0\">$0</a>", $text); 
} 
+0

Да, просто понял это. Я идиот. Забыл присвоить 'preg_replace' var. – Francesca

+0

Не волнуйтесь, все сделали это хотя бы один раз. – Toto

+0

@Francesca: обратите внимание, что если вы абсолютно не хотите печатать 'yep!', Тест с 'strpos' перед' preg_replace' абсолютно бесполезен. Если вы хотите узнать, была ли выполнена хотя бы замена, вы можете использовать параметр «count» для 'preg_replace' –

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