【问题标题】:Most efficient way to check a URL检查 URL 的最有效方法
【发布时间】:2011-11-03 16:48:07
【问题描述】:

我正在尝试检查用户提交的 URL 是否有效,当用户点击提交时,它会直接进入数据库。 到目前为止,我有:

$string = $_POST[url];
if (strpos($string, 'www.') && (strpos($string, '/')))
{
    echo 'Good';
}

提交的页面应该是目录中的页面,而不是主站点,所以http://www.address.com/page 如何让它检查第二个 / 而不会认为它来自 http:// 并且不包括 .com

示例输入:

 Valid:
     http://www.facebook.com/pageName
     http://www.facebook.com/pageName/page.html
     http://www.facebook.com/pageName/page.*

Invalid:
     http://www.facebook.com
     facebook.com/pageName
     facebook.com

【问题讨论】:

  • 每次都是同一个域吗?
  • 发布一些有效和无效的输入样本。

标签: php database forms verification


【解决方案1】:
if(!parse_url('http://www.address.com/page', PHP_URL_PATH)) {
    echo 'no path found';
}

请参阅parse_url 参考。

【讨论】:

    【解决方案2】:

    请参阅parse_url() 函数。这将在单独的字符串中为您提供 URL 的“/page”部分,然后您可以根据需要对其进行分析。

    【讨论】:

      【解决方案3】:
      filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED)
      

      更多信息在这里:

      http://ca.php.net/filter_var

      【讨论】:

        【解决方案4】:

        也许 strrpos 会帮助你。它将定位字符串中最后一次出现的字符串

        【讨论】:

          【解决方案5】:

          要检查 URL 的格式,您可以使用正则表达式:

          preg_match [http://php.net/manual/en/function.preg-match.php] 是一个好的开始,但需要了解正则表达式才能使其发挥作用。

          另外,如果你真的想检查它是否是一个有效的 URL,你可以检查 URL 的值,看看它是否真的解析为一个网页:

          function check_404($url) {
              $return = @get_headers($url);
          
              if (strpos($return[0], ' 404 ') === false)
                  return true;
              else {
                  return false;
              }
          }
          

          【讨论】:

          • 我明确建议反对请求 URL,除非这是一个硬性要求。性能开销非常大。
          • 确实,这是次要的想法。大多数情况下,它只是不经常更新,并且 URL 有效的重要性很高。
          【解决方案6】:

          尝试使用正则表达式来查看 URL 的结构是否正确。这是more reading on this。您需要了解 PCRE 的工作原理。

          您想要的一个简单示例(免责声明:未经测试,不完整)。

          function isValidUrl($url) {
              return preg_match('#http://[^/]+/.+#', $url));
          }
          

          【讨论】:

            【解决方案7】:

            从这里:http://www.blog.highub.com/regular-expression/php-regex-regular-expression/php-regex-validating-a-url/

                <?php
            /**
            * Validate URL
            * Allows for port, path and query string validations
            * @param    string      $url       string containing url user input
            * @return   boolean     Returns TRUE/FALSE
            */
            function validateURL($url)
            {
            $pattern = '/^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&amp;?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/';
            return preg_match($pattern, $url);
            }
            
            $result = validateURL('http://www.google.com');
            print $result;
            ?>
            

            【讨论】:

              猜你喜欢
              • 2011-01-04
              • 2014-02-02
              • 2020-03-23
              • 1970-01-01
              • 2011-12-07
              • 1970-01-01
              • 2019-09-28
              • 2013-05-31
              • 1970-01-01
              相关资源
              最近更新 更多