前面加上“http://”以或不以“www”开头的URL。在一个字符串中

发布于 2024-10-22 07:02:55 字数 524 浏览 8 评论 0原文

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

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

我正在使用 例如:

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

但是,如果它是 src="example.com" 而不是 http://example.com ,它将无法工作。那么,如何将 example.com 转换为 http://www.example.com 呢?

I need help replacing a link like google.com into http://www.example.com

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

I'm using an <iframe> like:

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

However, if its src="example.com" instead of http://example.com it will not work. So, how can I transform example.com into http://www.example.com?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

短暂陪伴 2024-10-29 07:02:55

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

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

Here's a non regex hack way to do it.

$url = 'google.com';
function addHTTP($url) {
 return 'http://'.str_replace('http://','',$url);
}
预谋 2024-10-29 07:02:55
$url = "www.google.com";
if(!preg_match("/^https/i",$url))
    $url = "http://$url"; 
$url = "www.google.com";
if(!preg_match("/^https/i",$url))
    $url = "http://$url"; 
不及他 2024-10-29 07:02:55

有更好的方法可以做到这一点,但这会起作用:

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

There are better ways to do this, but this will work:

if(!preg_match("#^http:\/\/#", $url)) {
         $url = "http://".$url;
}
墨离汐 2024-10-29 07:02:55
$url = 'http://' . $url;

最简单的方法:o

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

the simpliest way possible :o

一桥轻雨一伞开 2024-10-29 07:02:55

检查 http:// 是否在其开头,如果没有则对其进行标记怎么样?就像这样:

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

How about checking if http:// is on the beginning of it and if not tag it on? Like so:

$url = 'google.com';
if (!preg_match('#^http://#', $url)) {
  $url = 'http://'.$url;
}
穿越时光隧道 2024-10-29 07:02:55

只是为了好玩,这里通过利用负向前瞻来仅使用 preg_replace 。但是,我同意这里的其他解决方案,最好是先进行 preg_match,然后进行字符串连接。

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

Just for fun, here's one that uses just preg_replace by taking advantage of a negative lookahead. However, I agree with the other solutions here, that it is probably best to just to a preg_match and then a string concatenation.

$url = preg_replace('#^(?!https?://)#', 'http://', $url);
少女情怀诗 2024-10-29 07:02:55

如果你只是想让你的正则表达式匹配 google.com ea,你所要做的就是使 www.选修的。请注意,这可能会引入其他问题,例如 end.begin 被识别为 URL。

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

If you just want to make your RegEx match google.com e.a., all you have to do is make www. optional. Please note that this may introduce other problems, such as end.begin being recognized as an URL.

/([^\w\/])((www\.)?[a-z0-9\-]+\.[a-z0-9\-]+)/i
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文