php preg_match 未返回预期结果

php preg_match is not returning expected results

我有这个

$str = '"javascript:OpenWindow("order.aspx?order_id=161FA084AEF13FD7")"';
preg_match('/order\.aspx\?order_id=(.*\"\))/', $str, $a);
print_r($a);

预期输出:

161FA084AEF13FD7

但得到

161FA084AEF13FD7")

请改进这个..

试试这个正则表达式:

preg_match('/order\.aspx\?order_id=([^")]+)/', $str, $a);

[^")]+ 是基于否定的正则表达式,它匹配文本直到找到 ") 因此匹配 ") 之前的标识符而不实际捕获它。

作为另一种解决方案,您只需要移动结束捕获括号,这样它就不会包含引号和结束括号字符。

例如,使用这个:

/order\.aspx\?order_id=(.*)\"\)/
                          ^
                          |
                   move this over here