Как я могу взять строку текста с гиперссылками, развернуть их и снова вставить их в php? - PullRequest
1 голос
/ 14 октября 2011

Если у меня есть строка текста из Twitter, например:

$string = "This is a link http://t.co/252351ga to follow.";

Как мне развернуть ссылку и заново вставить в исходную строку, как показано ниже:

$new_string = "This is a link http://www.example.org/article/23534 to follow.";

Ответы [ 2 ]

2 голосов
/ 14 октября 2011

Это проблема из двух частей.Сначала вам нужно регулярное выражение, чтобы найти и извлечь URL-адреса.Для простоты лучше использовать там preg_replace_callback.(Вы найдете любое количество более хороших регулярных выражений, если воспользуетесь поиском.)

 = preg_replace_callback('#http://\S+#', "replace_url_callback", $html)

Во-вторых, вы либо используете сокращенный сервис / API расширения URL, либо запрашиваете URL-адреса самостоятельно и проверяете перенаправления илисоответствующий метатег в ответе.(Например: http://jamiethompson.co.uk/web/2010/05/18/expanding-short-urls-with-php-expand_url-php-function/ - Забыл название службы, о которой я читал в последнее время .. Не важно, это просто называется "LongURL.org". Не связан.)

1 голос
/ 14 октября 2011

Возможно, вы захотите использовать что-то вроде preg_replace и использовать шаблон для сопоставления URL-адресов и замены соответствия своим собственным URL-адресом.

РЕДАКТИРОВАТЬ: Здесь вы можете найти хорошее регулярное выражение URL:http://flanders.co.nz/2009/11/08/a-good-url-regular-expression-repost/

Затем используйте его следующим образом:

$string = "This is a link http://t.co/252351ga to follow.";
$pattern = ''; //the pattern from the link
$replacement = 'http://www.example.org/article/23534';
echo preg_replace($pattern, $replacement, $string);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...