首先,我在正則表達式中不太好,所以在這裏可能會有錯誤。我得到了下面的正則表達式我創建:正則表達式在Expresso中工作,但不在PHP中(使用preg_match_all)
`(?:\\&|[^&])*` (PHP : `/(?:\\&|[^&])*/s`)
解析的那種以下字符串:
hfghfg=hfghfg&gfdgdf=4343543&gfdgfdgfd=fsdfds\&hghg999
咖啡給我這個:
hfghfg=hfghfg
NULL
gfdgdf=4343543
NULL
gfdgfdgfd=fsdfds\&hghg999
NULL
所以它一樣explode('&', $String)
但是如果\& is found
,它不會被切斷。
但在PHP,preg_match_all
和preg_match
給我這個:
preg_match_all('/(?:\\&|[^&])*/s',
implode('', $this->Grecko->Input->Server('argv')),
$Args, PREG_PATTERN_ORDER);
print_r($Args);
Array
(
[0] => Array
(
[0] => hfghfg=hfghfg&gfdgdf=4343543&gfdgfdgfd=fsdfds\&hghg999
[1] =>
)
)
你想要解析的字符串看起來像是url的GET部分。如果是這樣的話,你可能想嘗試PHP的'parse_str()'函數http://ca2.php.net/manual/en/function.parse-str.php – dnagirl
@dnagirl parse_str thing \&是一個新值,不要逃避它。 –
@DavidBélanger我已經添加了一個正確使用'parse_str'解析給定輸入字符串的答案,因爲'\&'可以正確編碼。 – nickb