Как видно из названия, я пытаюсь сократить все URL-адреса с помощью is.gd api в строке и связать их.
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
.