【发布时间】:2020-05-30 01:15:33
【问题描述】:
正如标题所说,我正在尝试使用 is.gd api 在字符串中缩短 all url 并将它们链接起来。
function link_isgd($text)
{
$regex = '@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-~]*(\?\S+)?)?)?)@';
preg_match_all($regex, $text, $matches);
foreach($matches[0] as $longurl)
{
$tiny = file_get_contents('http://isnot.gd/api.php?longurl='.$longurl.'&format=json');
$json = json_decode($tiny, true);
foreach($json as $key => $value)
{
if ($key == 'errorcode')
{
$link = $longurl;
}
else if ($key == 'shorturl')
{
$link = $value;
}
}
}
return preg_replace($regex, '<a href="'.$link.'" target="_blank">'.$link.'</a>', $text);
}
$txt = 'Some text with links https://www.abcdefg.com/123 blah blah blah https://nooodle.com';
echo link_isgd($txt);
这是我到目前为止所得到的,如果字符串中只有 1 个 url,则链接工作和缩短工作,但是如果有 2 个或更多,它们最终都相同。
注意:is.gd 不允许在帖子中发布,所以我以为我在这里发布了一个不允许的短链接,所以我不得不将其更改为 isnot.gd。
【问题讨论】:
标签: php json api foreach preg-match-all