没学过PHP,以下解释可能有出入如果和javascript的一致,i 应该表示忽略大小写,另外 g 表示匹配全部[^\/] 表示不是 / 的任意字符
+ 表示前面的式子至少出现一次那个 ! 应该是表示正则表达式结束吧(猜的)

解决方案 »

  1.   

    ("!(http\:\/\/?)([^\/]+)!i",  里面的!i分别表示什么???在书上找不到?
    ----- i 表示([i]gnore)忽略大小写 ,即 HTTP:// .. 的也可以匹配([^\/]+)!i 这个表示什么??怎么匹配??  正则看了很多次还是很模糊,郁闷啊!!
    ----- ([^\/]+) 是一部分,而 "!"是正则模式的边界符。
    就是红色部分,!(http\:\/\/?)([^\/]+)!i
    但是前后要匹配。这里可以一般用 "/",但是应为目标串里有 http:// 之类的字符,为了避免转义,就用了 !,
    当然你还可以用 "%", "|",等,比较灵活。但是前后要匹配。最后,对url的解析,其实php已经有个很好用的内置函数parse_url() 了,为啥不用它呢:)
      

  2.   

    [^\/]这不是表示匹配以/开头的字符传吗?怎么返回给数组的?怎么会得到Array  
      (  
              [0]  =>  http://www.php.net  
              [1]  =>  http://  
              [2]  =>  www.php.net  
      ) 
      

  3.   

    ^ 可以表示字符串开始,也可以表示取反
    [^\/] 就是取反而得到数组,是因为加了括号后分组的原因
    第一组:默认为整个表达式
    第二:!(http\:\/\/?)([^\/]+)!i
    第三:!(http\:\/\/?)([^\/]+)!i
      

  4.   

    !-是开始和结束的分界符,但长用/.../来表示
    i-意思是忽略大小写...即不考虑大小写情况!祝LZ好运!