1  是指以非一个以上“:”开头,并且紧跟其后为"://"的所有字符;如:http://XXX;
2  是指以0个以上非\n开头,紧跟为"/"及非"/"的一个以上的字符串,“/”要求是0次或1次结尾。如:abc/dsafdsaf/或dsafdsaf/fdsafdsaf;
3  是指以非一个以上":"开头,紧跟为":"和非一个以上"@"然后紧跟为0-1个"@"和非"\n"结尾的所有字符串.如:asfdsaf:safdsafdsa@afdasfsaf或ffdsafdsa:afds24$#问一下唠叨兄吧,他可是这方面的高手。

解决方案 »

  1.   

    1、取得协议类型
    2、页面名和参数部分
    3、取得邮件地址例:
    <?php
    $p = array(
      '|^([^:]+)://|',
      '|^(.*)/([^/]+)/?$|',
      '|^([^:]+):([^@]+)@?(.*)$|'
    );$s = "http://expert.csdn.net/Expert/topic/1979/1979083.xml?temp=.6324427";echo "<pre>";
    for($i=0;$i<count($p);$i++) {
      preg_match($p[$i],$s,$regs);
      print_r($regs);
    }
    ?>
    结果
    Array
    (
        [0] => http://
        [1] => http
    )
    协议类型为:http
    Array
    (
        [0] => http://expert.csdn.net/Expert/topic/1979/1979083.xml?temp=.6324427
        [1] => http://expert.csdn.net/Expert/topic/1979
        [2] => 1979083.xml?temp=.6324427
    )
    页面为:1979083.xml?temp=.6324427
    Array
    (
        [0] => http://expert.csdn.net/Expert/topic/1979/1979083.xml?temp=.6324427
        [1] => http
        [2] => //expert.csdn.net/Expert/topic/1979/1979083.xml?temp=.6324427
        [3] => 
    )
    没有匹配到,不是合法的邮件地址