【问题标题】:How do I detect the existence of a particular page in a URL?如何检测 URL 中是否存在特定页面?
【发布时间】:2011-02-22 08:53:55
【问题描述】:

我正在尝试检查某个特定 URL 是否存在于另一个网站提供的页面中。

我需要检查给定的 URL 是否包含指向我网站的链接。

我正在使用 PHP,我想使用 preg。

【问题讨论】:

    标签: php regex url curl


    【解决方案1】:

    如果你知道你要找的网址,你不能用strpos()吗?

    if (strpos($your_html_page, 'your_url') !== false) {
        echo 'The web web page has your_url in it.';
    }
    

    这是一个简单的匹配 - 但它不会告诉你它是否是一个超链接 - 只要 url 在页面中是 somwehere。如果您想验证实际上是一个超链接,那么这种方法 或简单的正则表达式 将无济于事(至少正则表达式可能是繁琐且不可靠的)。您需要正确地 parse DOM,提取 <a> 元素并检查 href 属性。

    【讨论】:

      【解决方案2】:

      对于解析部分,您可以使用simple html dom parser

      html = file_get_html('http://stackoverflow.com/');
      
      // Find all links 
      foreach($html->find('a') as $element){
         if( preg_match($your_website_url, $element->href) > 0){
            //do something
         }
      }
      

      【讨论】:

      • 我想要一个使用简单的正则表达式脚本来匹配
      • @KoolKabin : 使用preg_match 正在使用正则表达式。
      • @KoolKabin :你想要链接到你的网站,简单的 html 解析器过滤标签,你应该尽量避免使用正则表达式
      【解决方案3】:

      好吧,您使用 streams 获取内容,然后解析它。

      【讨论】:

        【解决方案4】:

        最近我不得不这样做......

        这是正则表达式

        preg_match_all( '/<a[^>]*href=[\'"]([^\'"]+)[\'"][^>]*>/i', $message, $links );

        在数组$links 中,您将拥有 2 个数组。

        0 - 完整的<a> 标签

        1 - href 属性的 Url

        【讨论】:

          猜你喜欢
          • 2012-01-11
          • 1970-01-01
          • 2015-11-13
          • 2011-03-07
          • 2019-07-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多