2016-06-27 10 views
0

うまくいけば、自分よりも経験豊富な人にとってシンプルなものです。CSV検索のハイフンを除外してください

私はCSVファイルの相互参照に以下を使用しています。検索アカウント番号によっては、そのアカウント番号の情報が表示されます。これはうまく動作しますが、自動生成されたCSVファイルには口座番号にハイフンが含まれていますが、顧客はこれを見たことがなく、番号のハイフンでseaerchに知らせません。

特殊な文字を除外して同じ検索機能を完了することはできますか?

<?php $acctno = isset($_GET['acctno']) ? $_GET['acctno'] : null; 

      $notices = null; 
      if ($acctno) { 
       if ($file = fopen(''.BASE_URL.'/data/ParcelNotices.csv', 'r')) { 
        while (($data = fgetcsv($file)) !== false) { 
         if ($data[0] === $acctno) { 
          $notices = $data[2]; 
          break; 
         } 

        } 
       } 
      }?> 

そして、私のCSVの口座番号は次のようになります。彼らは00100659から05を検索する場合00100659から05

それは完璧に動作しますが、私は彼らが0010065905を入力して、ポジティブな結果を得ることができるようにする必要があります。

ご協力いただければ幸いです。私が検索するときにそれはハイフンを無視するだろうと信じて

if($data[0] === $acctno || Str_Replace('-','',$data[0])===$acctno)){ 
    $notices = $data[2]; 
    break; 
} 

:これに

if($data[0] === $acctno){ 
    $notices = $data[2]; 
    break; 
} 

答えて

0

あなたはこの部分を変更することができます。ただし、リクエストが多い場合は、検索時間を短縮するために、すべてのダッシュを削除してCSVの2番目のコピーを作成するほうがはるかに良いでしょう。クリーンアップ:

EDIT1:任意の英数字以外の文字を除外するには、あなたがにpreg_replaceを使用することができますが、そのよう:

if($data[0] === $acctno || Preg_Replace('@[^a-zA-Z0-9]@','',$data[0])===$acctno)){ 
    $notices = $data[2]; 
    break; 
} 

EDIT2

<?php 

// 
$acctno_requested = isset($_GET['acctno']) ? $_GET['acctno'] : null; 

// 
$notices = null; 
if ($acctno_requested) { 
    if ($file = fopen(''.BASE_URL.'/data/ParcelNotices.csv', 'r')) { 
     while (($data = fgetcsv($file)) !== false) { 

      // 
      $accountno_file=$data[0]; 
      $accountno_file_clean=Preg_Replace('@[^a-zA-Z0-9]@','',$accountno_file); 

      // 
      if ($accountno_file_clean === $acctno_requested) { 
       $notices = $data[2]; 
       break; 
      } 

     } 
    } 
} 

?> 
+0

はあなたにそんなにomghai_8782ありがとう、あなたの応答が完全に働きました。 – mobius2000

+0

よろしくお願いします:) –

関連する問題