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
我有这个
$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