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

时间:2016-12-02 23:13:43

标签: php hyperlink

我的简单链接功能有问题。在提交表单上,有文本框,用户可以在其中包含网址。然后将该网址转换为工作链接并放入帖子中。这部分工作正常。如果用户在url前面包含http / https,它将正常工作。但如果他们不包含 http / https 或仅包含 www ,则会打开以下示例链接:

  1. mysiteexample.com/UrlTheyPasted.com
  2. mysiteexample.com/www.UrlTheyPasted.com
  3. (这应该作为视频/图像/网站的链接打开,..)

    这是代码:

    $output .= '<DIV CLASS="'.$outerclass.'">';
    $output .= '<DIV CLASS="'.$innertclass.'">'.$title.'</DIV>';
    $output .= '<DIV CLASS="'.$innervclass.'"><a href="'.$value.'" target="_blank">'.$value.'</a></DIV>';
    $output .= '</DIV>';
    

    任何人都知道这方面的解决方案或为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

在处理用户输入期间,使用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>';