Оберните ссылки вокруг ссылок в твитах с помощью php preg_replace - PullRequest
1 голос
/ 25 ноября 2010

Здравствуйте. Я пытаюсь отобразить последний твит, используя приведенный ниже код. Это preg_replace отлично подходит для переноса ссылки вокруг твиттера @usernames, но не работает для веб-адресов в твитах. Как мне получить этот код, чтобы обернуть ссылки вокруг URL в твитах.

        <?php
        /** Script to pull in the latest tweet */
        $username='fairgroceruk';
        $format = 'json';
        $tweet = json_decode(file_get_contents("http://api.twitter.com/1/statuses/user_timeline/{$username}.{$format}"));
        $latestTweet = htmlentities($tweet[0]->text, ENT_QUOTES);
        $latestTweet = preg_replace('/@([a-z0-9_]+)/i', '<a href="http://twitter.com/$1" target="_blank">@$1</a>', $latestTweet);
        $latestTweet = preg_replace('/http://([a-z0-9_]+)/i', '<a href="http://$1" target="_blank">http://$1</a>', $latestTweet); echo $latestTweet;

    ?>

Спасибо за помощь,

Ben

Ответы [ 2 ]

1 голос
/ 03 августа 2012

Я добавил точку и экранированный обратный слеш, чтобы была распознана вся ссылка.С кодом выше, это было только чтение ссылки до точки.Пока между вашей ссылкой и остальным текстом есть пробел, это регулярное выражение должно работать.

$text = preg_replace('/http:\/\/([a-z0-9_.\/]+)/i', '<a href="http://$1"     target="_blank">http://$1</a>', $text);
0 голосов
/ 25 ноября 2010

В основном из-за того, что регулярное выражение недопустимо - в середине есть / /.

Либо измените разделитель на что-то другое, например, чтобы остановить // посередине столкновения:

$latestTweet = preg_replace('~http://([a-z0-9_]+)~i', '<a href="http://$1" target="_blank">http://$1</a>', $latestTweet); echo $latestTweet;

Обратите внимание, что вам явно не нужно использовать ~, но он гораздо реже используется в регулярных выражениях (по крайней мере, по моему опыту), чем / в итоге получается.

В качестве альтернативы вы можете экранировать // часть:

$latestTweet = preg_replace('/http:\/\/([a-z0-9_]+)/i', '<a href="http://$1" target="_blank">http://$1</a>', $latestTweet); echo $latestTweet;
...