2016-12-02 51 views
1

我遇到了简单链接功能的问题。在提交表单上,有用户可以包含网址的文本框。这个URL然后被采取并且变成工作链接并且被放置在岗位。这部分工作正常。如果用户在url前面包含http/https,它会正常工作。但是,如果它们不包括HTTP/HTTPS或仅WWW,然后它会打开链接如下例所示:链接作为页面的一部分打开PHP

  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>'; 

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

+0

如果你说明你最初把价值从用户输入......请分享PHP代码,处理该变量。那就是你需要采取行动的地方,但是,我认为你可以在事实之后做到这一点,代码也会类似。 – WEBjuju

回答

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>'; 
+0

看到我的更新 – WEBjuju

+0

谢谢。有用 :) – UXRO

相关问题