PHP preg_replace帮助

时间:2011-03-15 21:41:05

标签: php preg-replace

我需要帮助将google.com等链接替换为http://www.google.com

$url = preg_replace("/([^\w\/])(www\.[a-z0-9\-]+\.[a-z0-9\-]+)/i", "$1http://$2",$url);
$output = htmlspecialchars(urldecode($url));

我正在使用iframe:

<iframe src='$url'></iframe>

但是,如果src =“google.com”而不是“http://google.com”则无效。那么,我如何将google.com转换为http://www.google.com

7 个答案:

答案 0 :(得分:1)

这是一种非正则表达式的黑客攻击方式。

$url = 'google.com';
function addHTTP($url) {
 return 'http://'.str_replace('http://','',$url);
}

答案 1 :(得分:0)

$url = "www.google.com";
if(!preg_match("/^https/i",$url))
    $url = "http://$url"; 

答案 2 :(得分:0)

有更好的方法可以做到这一点,但这将有效:

if(!preg_match("#^http:\/\/#", $url)) {
         $url = "http://".$url;
}

答案 3 :(得分:0)

$url = 'http://' . $url;

最简单的方法:op>

答案 4 :(得分:0)

检查http://是否在它的开头,如果没有标记,怎么样?像这样:

$url = 'google.com';
if (!preg_match('#^http://#', $url)) {
  $url = 'http://'.$url;
}

答案 5 :(得分:0)

只是为了好玩,这里是一个利用preg_replace利用负面前瞻的方法。但是,我同意这里的其他解决方案,最好只是preg_match然后是字符串连接。

$url = preg_replace('#^(?!https?://)#', 'http://', $url);

答案 6 :(得分:0)

如果您只是想让您的RegEx与google.com e.a.匹配,那么您只需要制作www。可选的。请注意,这可能会引入其他问题,例如end.begin被识别为网址。

/([^\w\/])((www\.)?[a-z0-9\-]+\.[a-z0-9\-]+)/i