开发者社区> 问答> 正文

php提取页面中域名规则问题!

一套程序中需要在指定的URL页面中提取里面所有的域名,现代码如下:

  $CODE = ......;//这里是获取远程的URL内容
        $temp = "/<a((.|\\n)*?)<\\/a>/i";
        preg_match_all( $temp, $CODE, $Jzz_thlld );
        $Jzz_thlld = $Jzz_thlld[0];
        $temp = "/ href=[\"']?http:\\/\\/www\\.([^>\"' ]+)[\"']?\\s*[^>]*>(.*)<\\/a>/si";

 for ($dos_skipping = 0; $dos_skipping < sizeof( $Jzz_thlld ); $dos_skipping++ )
        {
            preg_match( $temp, $Jzz_thlld[$dos_skipping], $tempurl );
            if ( !( $tempurl[1] != "" ) && !( strpos( $tempurl[1], "?" ) === FALSE ) && !( strpos( $tempurl[1], "&" ) === FALSE ) && !( strpos( $tempurl[1], "#" ) === FALSE ) && !( strpos( $tempurl[1], ":" ) === FALSE ) && !( strpos( $tempurl[1], " " ) === FALSE ) )
            {
                echo '99';
                $url_temp = "www.".$tempurl[1];
                if ( 0 < strpos( $url_temp, "/" ) )
                {
                    $url_arr = explode( "/", $url_temp );
                    $url_temp = $url_arr[0];
                }
                if ( $Jzz_cbgsf == "" )
                {
                    $Jzz_cbgsf = $url_temp;
                }
                else if ( strpos( "||".$Jzz_cbgsf."||", "||".$url_temp."||" ) === FALSE )
                {
                    $Jzz_cbgsf .= "||".$url_temp;
                }
            }
        }

上述代码中不能按照需求获取到所需要的信息,忘各位帮忙看看,改如何修改!!

展开
收起
小旋风柴进 2016-03-10 09:43:01 2141 0
1 条回答
写回答
取消 提交回答
  • PHP实现获取域名的方法参考。

    方法一(用 系统变量)   

    //缺点不使用传递过来的地址和不支持系统变量的主机   
    echo $_SERVER['HTTP_HOST'];

    方法二(用自带函数)   

    $url = 'http://www.jb51.net/index.php?referer=jb51.net';   
    $arr_url = parse_url($url);   
    echo $arr_url['host'];

    方法三( 自己写函数)   

    function getdomain($url)    
    {    
       $url = str_replace('http://',”,$url);  //如果有http前缀,则去掉    
       $pos = strpos($url,'/');    
       if($pos === false)    
        {    
           return $url;    
       }else   
        {    
           return substr($url, 0, $pos);    
        }    
    }    
    echo getdomain($url);

    方法四(用正则)   

    preg_match("/^(http://)?([^/]+)/i", $url, $arr_domain);   
    echo $arr_domain[2];
    2019-07-17 18:56:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载