使用PHP缩短Facebook API中的URL文本
我正在使用Facebook API在网页上显示来自特定Facebook帐户的帖子。当Facebook用户发布包含长URL文本链接的消息时(即http://thisisreallylongandeventuallybreaksmyfrigginlayout ),它正在破坏我的布局 以下是我目前使用的PHP函数,用于从Facebook API获取帖子,并将任何URL转换为HTML链接:使用PHP缩短Facebook API中的URL文本,php,html,facebook,facebook-graph-api,Php,Html,Facebook,Facebook Graph Api,我正在使用Facebook API在网页上显示来自特定Facebook帐户的帖子。当Facebook用户发布包含长URL文本链接的消息时(即
public function linkify($ret) {
$ret = preg_replace("#(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t< ]*)#", "\\1<a href=\"\\2\">\\2</a>", $ret);
$ret = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r< ]*)#", "\\1<a href=\"http://\\2\">\\2</a>", $ret);
$ret = preg_replace("#(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret);
return $ret;
}
linkify公共功能($ret){
$ret=preg#u replace(“#(^|[\n])([\w]+?:/[\w]+[^\”\n\r\t<]*)#“,“\\1”,$ret);
$ret=preg#u replace(“#(^|[\n])((www.ftp)\.[^\”\t\n\r<]*)#“,“\\1”,$ret);
$ret=preg\u replace(“#(^ |[\n])([a-z0-9&-\-\.]+?)@([\w\-]+\.([\w\-\.]+.*[\w]+)\i”,“\\1”、$ret);
返回$ret;
}
有人能帮我修改函数,这样它也可以截断任何长链接文本吗?我不是说截短整个消息,只是任何长文本的链接
谢谢 您已经有了一个用于查找URL的正则表达式,因此实现它是小菜一碟。下面是一个伪代码:
for each($matchedLink in $ret) {
$ret = $ret.replace($matchedLink, "<a href='$matchedLink'>$(truncate($matchedLink))</a>";
}
每个($ret中的匹配链接){
$ret=$ret.replace($matchedLink,“”;
}
(对不起,我不是PHP程序员,也许可以用更智能的方式完成)您已经有了一个用于查找URL的正则表达式,因此实现这一点很容易。下面是一个伪代码:
for each($matchedLink in $ret) {
$ret = $ret.replace($matchedLink, "<a href='$matchedLink'>$(truncate($matchedLink))</a>";
}
每个($ret中的匹配链接){
$ret=$ret.replace($matchedLink,“”;
}
(很抱歉,我不是PHP程序员,也许可以用更聪明的方式来完成)通过在我的函数中添加这一行来实现它:
$ret = preg_replace("/>(([[:alnum:]]+:\/\/)|www\.)([^[:space:]]"."{5,10})([^[:space:]]*)([^[:space:]]{5,10})([[:alnum:]#?\/&=])"."</", ">\\3...\\5\\6<", $ret);
$ret=preg\u replace(“/>”([:alnum:]+:\/\/)\124; www\)“{5,10}”([^[:space:]]*)([^[:space:]{5,10})([:alnum:][35;?\/&=])”\\ 3…\\5\\6通过将这一行添加到我的函数中,它开始工作了:
$ret = preg_replace("/>(([[:alnum:]]+:\/\/)|www\.)([^[:space:]]"."{5,10})([^[:space:]]*)([^[:space:]]{5,10})([[:alnum:]#?\/&=])"."</", ">\\3...\\5\\6<", $ret);
$ret=preg\u replace(“/>(([:alnum:]+:\/\/)| www\)([^[:space:]])“{5,10}”([^[:space:]]*)([^[:space:]{5,10})([:alnum:\/&=])”\\3…\\5\\6我没有剪切www。我无法修复布局,因为它是一个移动布局。当链接很长时,页面会被缩小,并且没有100%放大。它没有被破坏,只是不是我想要的显示方式。我不想限制文本,只想限制导致问题的url文本。我没有创建Facebook帖子,所以我我没有使用URL缩短器。我没有编写PHP代码。我不擅长正则表达式…这就是我在这里发布的原因。:)我会很感激这些代码。我没有删掉www。我无法修复布局,因为它是一个移动布局。当链接很长时,页面会被缩小,并且没有100%放大。它没有被破坏,只是不是我想要的显示方式。我不想限制文本,只想限制导致问题的url文本。我不会创建Facebook发帖,所以我不能使用URL缩短器。我没有编写PHP代码。我不擅长正则表达式…这就是我在这里发帖的原因。:)我将非常感谢代码。