搜 索

使用php代码与正则验证与匹配链接中域名的办法

编辑:QTOOL.NET日期:2019-12-15481

在制作网站时,有时候需要对用户输入的内容进行处理,怎样单独使用正则验证输入的是否是网站还是链接还是其他呢?

<?php

$strrul = '需要验证的域名或网址';

$match1 = "/^((ht|f)tps?):\/\/([\w\-]+(\.[\w\-]+)*\/)*[\w\-]+(\.[\w\-]+)*\/?(\?([\w\-\.,@?^=%&:\/~\+#]*)+)?/";

$match2 = '/^([a-z0-9]+([a-z0-9-]*(?:[a-z0-9]+))?\.)?[a-z0-9]+([a-z0-9-]*(?:[a-z0-9]+))?(|\.org\.cn|\.org|\.net\.cn|\.gov\.cn|\.edu|\.com\.cn|\.com|\.co|\.cn|\.cc)$/i';

if(preg_match($match1, $strrul )){

echo "这是一个url链接";

}elseif(preg_match($match1, $strrul )){

echo "检测到内容为域名";

}else{

echo "其他内容";

}

?>

通过正则分别匹配链接与域名来判断指定的字符串内容的类型.


那么怎样在输入的链接中匹配出一级主域名呢?

<?php

$strurl = "需要处理的网址";

$match3 = "/[/w-]+/.(com|net|org|gov|cc|xyz|info|tv)(/.(cn))*/";//可|后缀添加新类型域名

preg_match( $match3, $strurl, $newstrarr );

if ( count( $newstrarr ) > 0 ) {

  $urlname = $newstrarr[ 0 ];//如果输入内容为普通域名

} else {

  $pararr = parse_url( $strurl );//parse_url函数获得url各个位置的值

  $hosturl = $pararr[ "host" ];//获取域名

preg_match( $match3, $strurl, $newstrarr );  

    $arr = explode( ".", $hosturl );

    $arrnum = count( $arr );

    $arrwb = array( "com", "net", "org", "cn", "cc" ); 

    if ( in_array( $arr[ $arrnum - 2 ], $arrwb ) ) {

      $urlname = $arr[ $arrnum - 3 ] . "." . $arr[ $arrnum - 2 ] . "." . $arr[ $arrnum - 1 ];

    } else {

      $urlname = $arr[ $arrnum - 2 ] . "." . $arr[ $arrnum - 1 ];

    }

  } 

echo $urlname;

?>

主要使用到php的parse_url函数,它可以将一个url链接分解为scheme、host、path、query等多个组件.

以上就是使用php代码简单的实现验证与匹配出域名的方法.

TAG标签:php正则
此文章由QTOOL.NET编辑
最新文章

热门标签