2012-12-05 286 views
0

我已經通過的preg_match(例如)這個搜索:PHP的preg_match()

$imp = '2347027|2347026|2347025|234818|234817|234816|234815|234813|234810|234809|234807|234806|234805|234803|234709|234706|234705|234704|234703|1876|1868|1767|1473|1441|1268|1246|1242|998|996|995|994|993|992|977|976|975|974|973|972|971|968|967|966|965|964|963|962|961|960|886|880|856|855|852|685|679|678|677|676|675|674|673|598|597|595|593|592|591|509|507|506|505|504|503|502|501|423|421|420|389|387|386|385|381|378|376|375|374|373|372|371|370|359|358|357|356|355|354|353|352|351|299|280|269|268|267|266|265|264|263|261|260|258|257|256|255|254|253|252|251|250|249|248|245|244|243|242|241|240|239|238|237|236|235|233|232|231|230|229|228|227|226|225|224|223|222|221|220|218|216|213|212|98|94|93|92|90|86|84|81|66|65|64|63|62|61|60|58|57|56|55|54|53|52|51|49|48|47|46|45|44|43|41|40|39|36|34|33|32|31|30|27|20|7|1'; 

preg_match("[^$imp]", '2348088170000', $matches); 
echo '<pre>'; 
var_dump($matches); 

和我得到:

array(1) { 
    [0]=> 
    string(2) "34" 
} 

這不是我想要的。我實際上想要匹配234808的字符串(2348088170000),這在$ imp中不存在。所以,我想這個代替:

$imp = '2347027|^2347026|^2347025|^234818|^234817|^234816|^234815|^234813|^234810|^234809|^234807|^234806|^234805|^234803|^234709|^234706|^234705|^234704|^234703|^1876|^1868|^1767|^1473|^1441|^1268|^1246|^1242|^998|^996|^995|^994|^993|^992|^977|^976|^975|^974|^973|^972|^971|^968|^967|^966|^965|^964|^963|^962|^961|^960|^886|^880|^856|^855|^852|^685|^679|^678|^677|^676|^675|^674|^673|^598|^597|^595|^593|^592|^591|^509|^507|^506|^505|^504|^503|^502|^501|^423|^421|^420|^389|^387|^386|^385|^381|^378|^376|^375|^374|^373|^372|^371|^370|^359|^358|^357|^356|^355|^354|^353|^352|^351|^299|^280|^269|^268|^267|^266|^265|^264|^263|^261|^260|^258|^257|^256|^255|^254|^253|^252|^251|^250|^249|^248|^245|^244|^243|^242|^241|^240|^239|^238|^237|^236|^235|^233|^232|^231|^230|^229|^228|^227|^226|^225|^224|^223|^222|^221|^220|^218|^216|^213|^212|^98|^94|^93|^92|^90|^86|^84|^81|^66|^65|^64|^63|^62|^61|^60|^58|^57|^56|^55|^54|^53|^52|^51|^49|^48|^47|^46|^45|^44|^43|^41|^40|^39|^36|^34|^33|^32|^31|^30|^27|^20|^7|^1'; 

preg_match("[^$imp]", '2348088170000', $matches); 
echo '<pre>'; 
var_dump($matches); 

和我:

array(0) { 
} 

EHICH是我想要的。 我想問後者$ imp是否有效,並且不會提示任何錯誤。 RE不是很完美。 在此先感謝。

回答

0

您需要刪除克拉呼叫:

preg_match("[^$imp]", '2348088170000', $matches); 

preg_match("[$imp]", '2348088170000', $matches); 
+0

但是請注意,後者$小鬼不與克拉開始。我從$ imp = implode('| ^',array_keys($ activeNetworkGateway))獲得了$ imp;以獲得上面的格式。如果我從preg_match(「[$ imp]」,'2348088 ....')排除^,那麼2347027將不匹配RE。 –

+0

這樣做更好:$ imp ='^'。implode('| ^',array_keys($ activeNetworkGateway )); –