1 回答
TA贡献1862条经验 获得超7个赞
您的变量$link
不是数组,因此它只需要最后分配的值$link
. 您可以preg_replace
用str_replace
匹配项和链接替换并传递数组。
您也可以使用preg_replace_callback()
并且可以将 $matches 直接传递给将替换为链接的函数。
function link_isgd($text)
{
$regex = '@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-~]*(\?\S+)?)?)?)@';
preg_match_all($regex, $text, $matches);
$links = [];
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') {
$links[] = $longurl;
} else if ($key == 'shorturl') {
$links[] = $value;
}
}
}
$links = array_map(function ($el) {
return '<a href="' . $el . '" target="_blank">' . $el . '</a>';
}, $links);
return str_replace($matches[0], $links, $text);
}
- 1 回答
- 0 关注
- 119 浏览
添加回答
举报