php 匹配url 正则表达式代码

这是个获取文章内容中所有链接的php正则表达式.

$str ="";

$reg = "<a[sS]*?(href)s*=s*(?(?=["'])((["'])(?<href>[^"']*))|(?<src>[^s>]+))[sS]*?>";

下面这个实例是获取内容中域名正则表达式,代码如下:

  1. function get_domain($url){
  2. $pattern = "/[w-]+.(com|net|org|gov|cc|biz|info|cn)(.(cn|hk))*/";
  3. preg_match($pattern, $url, $matches);
  4. if(count($matches) > 0) {
  5. return $matches[0];
  6. }else{
  7. $rs = parse_url($url);
  8. $main_url = $rs["host"];
  9. if(!strcmp(long2ip(sprintf("%u",ip2long($main_url))),$main_url)) {
  10. return $main_url;
  11. }else{
  12. $arr = explode(".",$main_url);
  13. $count=count($arr);
  14. $endArr = array("com","net","org","3322");//com.cn net.cn 等情况
  15. if (in_array($arr[$count-2],$endArr)){
  16. $domain = $arr[$count-3].".".$arr[$count-2].".".$arr[$count-1];
  17. }else{
  18. $domain = $arr[$count-2].".".$arr[$count-1];
  19. }//开源代码phpfensi.com
  20. return $domain;
  21. }
  22. }
  23. }

使用实例如下:

$str ="jfkdlajfdafdjak;www.phpfensi.com";

echo get_domain($str)

得出值为phpfensi.com