代码之家  ›  专栏  ›  技术社区  ›  magic_al

正则表达式以匹配Php中的多个模式

  •  3
  • magic_al  · 技术社区  · 11 年前

    我尝试从以下字符串中提取Cookie:

    < Server: Apache
    < Set-Cookie: fe_typo_user=b4f33487c434684655dccf65a0499010; path=/
    < Set-Cookie: PHPSESSID=d8pgb31olkc9c1jc5tc5qn23a1; path=/
    < Expires: Thu, 19 Nov 1981 08:52:00 GMT
    

    所以我试过了

    /.*Set-Cookie: (.*?); /s
    

    这不应该让我看到所有出现在“Set Cookie:”和“;”之间的字符串吗?

    我收到了:

    array(2) {
       [0]=> string(137) \"< Server: Apache
             < Set-Cookie: fe_typo_user=b4f33487c434684655dccf65a0499010; path=/
             < Set-Cookie: PHPSESSID=d8pgb31olkc9c1jc5tc5qn23a1; \"
       [1]=> string(36) \"PHPSESSID=d8pgb31olkc9c1jc5tc5qn23a1\"
    }
    

    谢谢你的解释。

    3 回复  |  直到 11 年前
        1
  •  2
  •   Petah    11 年前
    preg_match_all('/Set-Cookie: (.*?);/is', $data, $result);
    

    给予:

    Array
    (
        [0] => Array
        (
            [0] => Set-Cookie: fe_typo_user=b4f33487c434684655dccf65a0499010;
            [1] => Set-Cookie: PHPSESSID=d8pgb31olkc9c1jc5tc5qn23a1;
        )
    
        [1] => Array
        (
            [0] => fe_typo_user=b4f33487c434684655dccf65a0499010
            [1] => PHPSESSID=d8pgb31olkc9c1jc5tc5qn23a1
        )
    
    )
    
        2
  •  1
  •   Toto    11 年前

    只需移除第一个 .* 并使用preg_match_all:

    preg_match_all('/Set-Cookie: (.*?); /s', $str, $m);
    
        3
  •  0
  •   Allen Chak    11 年前

    试试这个

    /Set\-Cookie:\ ([^;]+);/