我在简单的链接功能方面有问题。在提交表单上,有一些文本框,用户可以包含URL。然后将此URL取用并更改为工作链接并放置在帖子中。该部分正常工作。如果用户在URL前包含HTTP/HTTP,则可以正常工作。但是,如果它们不包括 http/https 或仅包括 www ,则它将像下面的示例打开链接:
- mySiteExample.com/urltheypasted.com
- mySiteExample.com/www.urltheypasted.com
(这应该作为视频/图像/网站的链接打开,..)
这是代码:
$output .= '<DIV CLASS="'.$outerclass.'">';
$output .= '<DIV CLASS="'.$innertclass.'">'.$title.'</DIV>';
$output .= '<DIV CLASS="'.$innervclass.'"><a href="'.$value.'" target="_blank">'.$value.'</a></DIV>';
$output .= '</DIV>';
任何人都知道解决方案,或者为什么会发生这种情况?
在处理用户输入期间,使用parse_url()
找出他们是否已将协议放置并采取相应行动。
$url = 'test.com';
$urlscheme = parse_url($url, PHP_URL_SCHEME);
if (empty($urlscheme)) {
$url = 'http://'.$url;
}
die('<pre>'.print_r($url,true));
所以,例如,在您的代码之前,请举一个示例:
$scheme = parse_url($value, PHP_URL_SCHEME);
if (empty($scheme)) $value = 'http://'.$value;
$output .= '<DIV CLASS="'.$outerclass.'">';
$output .= '<DIV CLASS="'.$innertclass.'">'.$title.'</DIV>';
$output .= '<DIV CLASS="'.$innervclass.'"><a href="'.$value.'" target="_blank">'.$value.'</a></DIV>';
$output .= '</DIV>';