我的表列中有逗號分隔的值,我必須將新值與舊值分開。如何找到與正則表達式不匹配的項目
我的代碼是
$a = '1,2,3,4';
$b = '1,2';
if(preg_match("/[^$b]/",$a,$matches)){
print_r($matches);
};
我想找到3,4
,但我不能這樣做。
我的表列中有逗號分隔的值,我必須將新值與舊值分開。如何找到與正則表達式不匹配的項目
我的代碼是
$a = '1,2,3,4';
$b = '1,2';
if(preg_match("/[^$b]/",$a,$matches)){
print_r($matches);
};
我想找到3,4
,但我不能這樣做。
你真的不應該使用正則表達式。 PHP具有良好的函數來計算交點:
$a = explode(',', '1,2,3,4');
$b = explode(',', '1,2');
print_r(array_values(array_diff($a, $b)));
參見:array_diff()
注意,這也將在下面的示例工作:
$a = '1,2,3,4';
$b = '1,3';
// outcome must be: 2, 4
使用preg_match_all
代替preg_match
$a = '1,2,3,4,10';
$b = '1,2';
if(preg_match_all("/[^$b](.*)/",$a,$matches)){
print_r($matches);
};
輸出
Array
(
[0] => Array
(
[0] => 3,4,10
)
[1] => Array
(
[0] => ,4,10
)
)
如果'$ a =='1,2,3,4,10''不起作用。 – 2013-04-08 07:46:43
@Farhad一旦你的值超過9,這將會中斷。 – 2013-04-08 07:52:07
@Farhad我解決了這個問題 – 2013-04-08 07:55:14
你真的想正則表達式? – sectus 2013-04-08 07:40:27
背後的邏輯是什麼? – DonCallisto 2013-04-08 07:40:43
請說清楚這個代碼你想要什麼? – 2013-04-08 07:43:31