【问题标题】:how can i check the start of the string in php? [duplicate]如何在 php 中检查字符串的开头? [复制]
【发布时间】:2010-09-21 07:21:49
【问题描述】:

我想要这样的东西

  1. 用户输入网站链接

  2. 如果链接,我需要检查链接 不以我想要的“http://”开头 将“http://”附加到链接。

我怎样才能在 PHP 中做到这一点?

【问题讨论】:

    标签: php string hyperlink


    【解决方案1】:
    if (stripos($url, 'http://') !== 0) {
       $url = 'http://' . $url;
    }
    

    【讨论】:

    • 你的答案是正确的,但是当人们将比较运算符的两个操作数按顺序排列时,我就受不了了。
    • 我同意卢卡斯。我的理由是,如果您将其作为英文句子阅读,那是没有意义的。 “如果零不等于这个函数的结果......”
    • 它显然不太可读。但是在 C 派生语言中,你可能会不小心写成“if (a=0)”,这是有原因的。 'if (0=a)' 会很快被抓住。虽然我个人不使用这种风格,但这是品味和编码标准的问题。
    • 这是个人品味。我总是使用这种表示法,我觉得它更具可读性。
    • 在数学中,你总是把变量放在左边,把数量放在右边。作为一个习惯,我总是听从卢卡斯的命令。
    【解决方案2】:

    我会建议对 tom 稍作改进

    if (0 !== stripos($url, 'http://') && 0 !== stripos($url, 'https://')) {
       $url = 'http://' . $url;
    }
    

    但是,这会弄乱使用其他协议(ftp:// svn:// gopher:// 等)的链接

    【讨论】:

    • 是的,看到你的回答我就想到了……
    【解决方案3】:
    if (!preg_match("/^http:\/{2}/",$url)){
        $url = 'http://' . $url;
    }
    

    【讨论】:

      【解决方案4】:

      我会检查一些字母后跟一个冒号。根据 URI 规范,冒号用于将“模式”(http、ftp 等)与“模式特定部分”分开。这样,如果有人输入(例如)mailto 链接,这些链接就会得到正确处理。

      【讨论】:

      • 是的,这确实应该使用协议正则表达式(允许端口以及 http 和 https)。
      猜你喜欢
      • 2010-12-30
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      • 2012-02-09
      • 2017-11-27
      • 1970-01-01
      相关资源
      最近更新 更多