$list_found = @preg_grep("/^|\|".$found."/i", $list);

解决方案 »

  1.   

    xuzuning(唠叨) 的写法只适合|重庆|铜梁|402560|023|这种形式的.
      

  2.   

    $x[]="内蒙古|林西|025200|0476";
    $x[]="内蒙古|克什克腾旗|025300|0476";
    $x[]="江苏|南京|210000|025";
    $x[]="江苏|江浦|211800|025";
    $x[]="江苏|六合|211500|025";$b="025";$R_preg="/(.*?)\|(.*?)\|(.*?)\|".$b."/s";
    foreach($x as $val)
    {
    if(preg_match($R_preg,$val))
    {
    echo $val;
    echo "<br>";
    }
    }
      

  3.   

    还没解决哪,试试这个<?php
    if (empty($found)){
    echo "您没有输入任何关键字!";
    } else {
    if (is_numeric($found) && strlen($found) > 4) {//关键字如果是数字并大于4位,则让其在邮编中查询
    $partten = "/^[^\|]+\|[^\|]+\|\d*".$found."\d*\|\d{3,4}$/";
    } elseif (is_numeric($found) && strlen($found) <= 4) {//关键字如果是数字并小于等于4位,则让其在区位中查询
    $partten = "/^[^\|]+\|[^\|]+\|\d{6}\|\d*".$found."\d*$/";
    } else {
    $partten = "/^.*".$found.".*\|\d{6}\|\d{3,4}$/";
    }
    $list=@file("./include/Zip.txt");
    $list_found = @preg_grep($partten, $list);
    if (count($list_found) > 0) {
    $ZipInfo = implode("<p>", $list_found);
    $ZipInfo=str_replace('|', ' - ', $ZipInfo);
    echo "$ZipInfo";
    } else {
    echo "没有找到与关键字匹配的数据!";
    }
    }
    ?>
      

  4.   

    $x[]="重庆|铜梁|402560|023"; 
    $x[]="河北|香河|302550|0316";
    $x[]="内蒙古|阿鲁科尔沁|025500|0476";
    $x[]="内蒙古|巴林左旗|025400|0476";
    $x[]="内蒙古|巴林右旗|025100|0476";
    $x[]="内蒙古|林西|025200|0476";
    $x[]="内蒙古|克什克腾旗|025300|0476";
    $x[]="江苏|南京|210000|025"; 
    $x[]="江苏|江浦|211800|025";
    $x[]="江苏|六合|211500|025"; 
    $x[]="江苏|江宁|211100|025"; 
    $x[]="江苏|高淳|211300|025"; 
    $x[]="江苏|溧水|211200|025";
    $x[]="测试|025025|025|025025";
    $Array_t=array(1=>"省",2=>"市",3=>"邮编",4=>"区号");$t="区号";
    $v="025";
    //$s="精确";$return_AS=array_search($t,$Array_t);if($return_AS!="NULL")
    {
    $preg_t="(".$v.")"; switch ($return_AS)
    {
    //最后一列
      case count($Array_t):
       $preg_all="/(.*?)\|".$preg_t."$/";
      break;
    //第一列
      case 1:
      $preg_all="/^".$preg_t."\|(.*?)/";
      break;
    //其他
      default:
      $preg_all="/(.*?)\|".$preg_t."\|(.*?)/";
      break;
    }} $fl_array = @preg_grep ($preg_all, $x);
    print_r($fl_array);
      

  5.   

      default:那段应该改成   //$preg_all="/(.*?)\|".$preg_t."\|(.*?)/";
       foreach($Array_t as $key=>$val)
    {
    if($key!=$return_AS)
    {
    $preg_all.="(.*?)\|";
    }
    else
    {
    $preg_all.=$preg_t."\|";
    }
    }
    $preg_all="/".substr($preg_all,0,-2)."/";
      break;
      

  6.   

    $x[]="重庆|铜梁|402560|023"; 
    $x[]="河北|香河|302550|0316";
    $x[]="内蒙古|阿鲁科尔沁|025500|0476";
    $x[]="内蒙古|巴林左旗|025400|0476";
    $x[]="内蒙古|巴林右旗|025100|0476";
    $x[]="内蒙古|林西|025200|0476";
    $x[]="内蒙古|克什克腾旗|025300|0476";
    $x[]="江苏|南京|210000|025"; 
    $x[]="江苏|江浦|211800|025";
    $x[]="江苏|六合|211500|025"; 
    $x[]="江苏|江宁|211100|025"; 
    $x[]="江苏|高淳|211300|025"; 
    $x[]="江苏|溧水|211200|025";
    $x[]="测试|025025|025|025025";
    $Array_t=array(1=>"省",2=>"市",3=>"邮编",4=>"区号");$t="区号";
    $v="025";
    //$s="精确";$return_AS=array_search($t,$Array_t);if($return_AS!="NULL")
    {
    $preg_t="(".$v.")";
       foreach($Array_t as $key=>$val)
    {
    if($key!=$return_AS)
    {
    $preg_all.="(.*?)\|";
    }
    else
    {
    $preg_all.=$preg_t."\|";
    }
    }
    $preg_all="/^".substr($preg_all,0,-2)."$/"; $fl_array = @preg_grep ($preg_all, $x);
    print_r($fl_array);
    }
      

  7.   

    谢谢各位、请问可否通过改$list_found = @preg_grep("/".$found."/i", $list);
    里面的正则来实现?
      

  8.   

    把$partten中的尾符$去掉,测试通过<?php
    if (empty($found)){
    echo "您没有输入任何关键字!";
    } else {
    if (is_numeric($found) && strlen($found) > 4) {//关键字如果是数字并大于4位,则让其在邮编中查询
    $partten = "/^[^\|]+\|[^\|]+\|\d*".$found."\d*\|\d{3,4}/";
    } elseif (is_numeric($found) && strlen($found) <= 4) {//关键字如果是数字并小于等于4位,则让其在区位中查询
    $partten = "/^[^\|]+\|[^\|]+\|\d{6}\|\d*".$found."\d*/";
    } else {
    $partten = "/^.*".$found.".*\|\d{6}\|\d{3,4}/";
    }
    $list=@file("zip.txt");
    $list_found = @preg_grep($partten, $list);
    if (count($list_found) > 0) {
    $ZipInfo = implode("<p>", $list_found);
    $ZipInfo=str_replace('|', ' - ', $ZipInfo);
    echo "$ZipInfo";
    } else {
    echo "没有找到与关键字匹配的数据!";
    }
    }
    ?>输入$found = "025";得出:
    江苏 - 南京 - 210000 - 025 
    江苏 - 江浦 - 211800 - 025 江苏 - 六合 - 211500 - 025 江苏 - 江宁 - 211100 - 025 江苏 - 高淳 - 211300 - 025 江苏 - 溧水 - 211200 - 025输入$found = "六合";得出:
    江苏 - 六合 - 211500 - 025