链接作为页面PHP的一部分打开



我在简单的链接功能方面有问题。在提交表单上,有一些文本框,用户可以包含URL。然后将此URL取用并更改为工作链接并放置在帖子中。该部分正常工作。如果用户在URL前包含HTTP/HTTP,则可以正常工作。但是,如果它们不包括 http/https 或仅包括 www ,则它将像下面的示例打开链接:

  1. mySiteExample.com/urltheypasted.com
  2. 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>';

最新更新