解决方案 »

  1.   

    (http\:\/\/|https\:\/\/)?(([a-zA-Z0-9-]+\.)+)+(com|cn|org|net)(\/[\w\%\&\=\'\"\?\/\.]*)?
      

  2.   

    楼上大神解决。不过我感觉第二个子表达式后面不用加+(http\:\/\/|https\:\/\/)?(([a-zA-Z0-9-]+\.)+)(com|cn|org|net)(\/[\w\%\&\=\'\"\?\/\.]*)?
      

  3.   

    $pattern = '/(http\:\/\/|https\:\/\/)?((?:[a-zA-Z0-9-]+\.)+)(com|cn|org|net)(\/[\w%&=\'"?\/.]*)?/';
    $string = 'http://demo.demo.baidu.com';
    preg_match_all($pattern,$string,$result);
    Array
    (
        [0] => Array
            (
                [0] => http://demo.demo.baidu.com
            )    [1] => Array
            (
                [0] => http://
            )    [2] => Array
            (
                [0] => demo.demo.baidu.
            )    [3] => Array
            (
                [0] => com
            )    [4] => Array
            (
                [0] => 
            ))
      

  4.   

    其实我是想用做一个URL添加a标签的函数,要用preg_replace()结合模式修正符e,在replacement参数里要调用到一个函数,给这个函数传入匹配到的字符串也就是URL,书上写的是urlCut('\\1\\2\\3\\4'),我不熟悉也就跟着用这个方法传入了。一开始就出现了最上面那个问题。用了上面大神的方法解决之后是没问题的,但是大神提醒查了手册之后,发现可以直接传入\\0,这也就省了很多事了。万万没想到啊~
    再次感谢二位!