0

我通过 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"
}

这不是我想要的。我实际上想匹配 $imp 中不存在的 234808 的字符串(2348088170000)。所以我尝试了这个:

$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) {
}

这就是我想要的。我想问一下后者 $imp 是否有效并且不会提示任何错误。对 RE 来说并不是很完美。提前致谢。

4

1 回答 1

0

您需要删除通话中的克拉:

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

preg_match("[$imp]", '2348088170000', $matches);
于 2012-12-06T00:02:25.987 回答