如何获取带有超链接的文本字符串,打开它们并在php中重新插入它们?

时间:2011-10-14 16:32:57

标签: php twitter hyperlink

如果我有来自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 个答案:

答案 0 :(得分:2)

这是一个由两部分组成的问题。首先,您需要一个正则表达式来查找和提取URL。为简单起见,最好在那里使用preg_replace_callback。 (如果使用搜索,你会发现任意数量的更好的正则表达式。)

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

其次,您要么使用缩短的URL扩展服务/ API,要么自己请求URL并检查响应中的重定向或相应元标记。 (例如:http://jamiethompson.co.uk/web/2010/05/18/expanding-short-urls-with-php-expand_url-php-function/ - 忘记我最近读到的服务名称.. 没关系,它简称为“LongURL.org”。没有附属。)

答案 1 :(得分:1)

您可能希望使用类似preg_replace的内容,并使用模式匹配网址并将匹配替换为您自己的网址。

修改 你可以在这里找到一个好的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);