将网站的 URL 格式化为字符串,并在前面添加 http://

发布于 2024-10-26 04:40:00 字数 695 浏览 2 评论 0 原文

我有一个评论系统,允许自动链接网址。我正在使用 cakephp,但解决方案更多的是 PHP。这就是正在发生的事情。

如果用户使用 http://https:// 输入完全限定的 url,一切都很好。 但如果他们输入 www.scoobydoobydoo.com,它就会变成 http://cool-domain.com/www.scoobydoobydoo.com。基本上 cakephp 知道 http|https 是外部 url,因此它可以与 http|https 一起使用,否则不能。

我的想法是在 url 上做一些 str 的事情,并让它插入 http(如果不存在)。不幸的是,无论我尝试什么,只会让事情变得更糟。我是菜鸟:)感谢任何帮助/指示。

谢谢

编辑:发布解决方案片段。可能不是最好的,但感谢您的回答,至少我有一些东西。

<?php
        $proto_scheme = parse_url($webAddress,PHP_URL_SCHEME);
    if((!stristr($proto_scheme,'http')) || (!stristr($proto_scheme,'http'))){
        $webAddress = 'http://'.$webAddress;
    }
?>

I have a comment system that allows auto linking of url. I am using cakephp but the solution is more just PHP. here is what is happening.

if the user enters fully qualified url with http:// or https:// everything is fine.
but if they enter www.scoobydoobydoo.com it turns into http://cool-domain.com/www.scoobydoobydoo.com. basically cakephp understands that http|https is an external url so it works with http|https not otherwise.

My idea was to do some kind of str stuff on the url and get it to insert the http if not present. unfortunately whatever i try only makes it worse. I am noob :) any help / pointer is appreciated.

thanks

EDIT: posting solution snippet. may not be the best but thanks to answer at least I have something.

<?php
        $proto_scheme = parse_url($webAddress,PHP_URL_SCHEME);
    if((!stristr($proto_scheme,'http')) || (!stristr($proto_scheme,'http'))){
        $webAddress = 'http://'.$webAddress;
    }
?>

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

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

发布评论

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

评论(4

∞梦里开花 2024-11-02 04:40:00
$url = "blahblah.com";
// to clarify, this shouldn't be === false, but rather !== 0
if (0 !== strpos($url, 'http://') && 0 !== strpos($url, 'https://')) {
   $url = "http://{$url}";
}
$url = "blahblah.com";
// to clarify, this shouldn't be === false, but rather !== 0
if (0 !== strpos($url, 'http://') && 0 !== strpos($url, 'https://')) {
   $url = "http://{$url}";
}
似最初 2024-11-02 04:40:00

尝试使用 parse_url 函数:http://php.net /manual/en/function.parse-url.php

我认为这会对您有所帮助。

Try the parse_url function: http://php.net/manual/en/function.parse-url.php

I think this will help you.

感性不性感 2024-11-02 04:40:00

我遇到了类似的问题,所以我创建了以下 php 函数:

    function format_url($url)
{
    if(!$url) return null;
    $parsed_url = parse_url($url);
    $schema     = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : 'http://';
    $host     = isset($parsed_url['host']) ? $parsed_url['host'] : '';
    $path     = isset($parsed_url['path']) ? $parsed_url['path'] : '';
    return "$schema$host$path";
}

如果您格式化以下内容:format_url('abcde.com'),结果将是 http://abcde.com

I've had a similar issue, so I created the following php function:

    function format_url($url)
{
    if(!$url) return null;
    $parsed_url = parse_url($url);
    $schema     = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : 'http://';
    $host     = isset($parsed_url['host']) ? $parsed_url['host'] : '';
    $path     = isset($parsed_url['path']) ? $parsed_url['path'] : '';
    return "$schema$host$path";
}

if you format the following: format_url('abcde.com'), the result will be http://abcde.com.

忱杏 2024-11-02 04:40:00

这是正则表达式: https://stackoverflow.com/a/2762083/4374834

ps @Vangel,Michael McTiernan 的答案是正确,所以请先学习一下 PHP,然后再说,有些事情可能会失败:)

Here is the regex: https://stackoverflow.com/a/2762083/4374834

p.s. @Vangel, Michael McTiernan's answer is correct, so please, learn your PHP before you say, that something might fail :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文