我想要对url进行比配。下面是我写的一个$strRegex = '/(((http[s]?:\/\/)?[A-Za-z0-9]+)\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"\s])*)/i';支持 http:// https://  www 三种形式,现在对www支持不太好。关键是这个地方 ((http[s]?:\/\/)?[A-Za-z0-9]+)
要满足下列条件:
1. 如果http[s] 不出现的话,后面是www则满足,如  www.163.com,不是www则不会满足,如:hg.163.com。2. 有http[s] 则会满足,如:http[s]://hg.163.com.请高手指点

解决方案 »

  1.   

    $strRegex = '/(((http[s]?:\/\/)?[A-Za-z0-9]+)\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"\s])*) | (www\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"\s])*)/i';
      

  2.   

    小修改一下:
    $strRegex = '/(((http[s]?:\/\/)[A-Za-z0-9]+)\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"\s])*) | (www\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"\s])*)/i';
      

  3.   

    谢谢 CunningBoy.不过我试了下没有成功 ,代码如下: 
    function autolink($foo) 
    {
                $strRegex = '/(((http[s]?:\/\/)[A-Za-z0-9]+)\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"\s])*) | (www\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"\s])*)/i';
                return preg_replace($strRegex, '<a target="_blank" href="$1">$1</a>', $foo);
            }
      

  4.   

    我录入  http://www.163.com
    $foo = 'http://www.163.com';它并没有变成链接。
      

  5.   

    Thx CunningBoy.你写的没有问题,我直接copy的,把 ) | ( 中的空格去掉就好了。)|( .$strRegex = '/((((http[s]?:\/\/)[A-Za-z0-9]+)|www)\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"\s])*)/i';