0

エクセル、csv形式のファイルを読み込むシステムを作っています。また、国コードや都市コードなどの列があり、国には値が 1 つしかなく、都市は次のようにカンマで区切ることができます

国コード CityCode

230 91、92、01-03、1-3

私のデータベースにはこのような行がたくさんあります。そして、私の最終的な出力は

最終コード CountryCode 都市コード

23091 230 91

23092 230 92

23001 230 01

23002 230 02

23003 230 03

2301 230 1

2302 230 2

2303 230 3

そして、私は上記のような正しい出力を得ています。アップロードされたファイルをサーバー上のディレクトリに移動します。

http://phpexcel.codeplex.com/にあるライブラリを使用しています

この関数を使用して、01-03 や 1-3 などのコードの範囲を取得しています。次のとおりです。

function getRangeOfCodes($mystring)

    {

                     $findme   = '-';

         $pos = strpos($mystring, $findme);

         if($pos === false)
         {
             $length   = strlen($mystring);
             $range    = range(preg_replace("/[^0-9]+/", "",$mystring),preg_replace("/[^0-9]+/", "",$mystring));
         }
         else
         {
             $ct       = explode("-",$mystring);
             $length   = strlen($ct[0]);
             $range    = range(preg_replace("/[^0-9]+/", "",$ct[0]), preg_replace("/[^0-9]+/", "",$ct[1]));
         }

         $result['range']  = $range;
         $result['length'] = $length;
         return $result;
    }

誤ってファイルに変更を加えていて、コードをトリミングするのを忘れていました。スペースを使用して都市コードが次のように読み取られました。

最終コード CountryCode 都市コード

23091 230 91

230092 230 092

230001 230 001

230002 230 002

230003 230 003

23001 230 01

23002 230 02

23003 230 03

これらのコードをデータベースからダウンロードしているときに、パスを指定してディレクトリにアップロードされたシートと比較し、都市コードが国コードに対応する都市コードと一致しない場合、私はそのためのエラーを表示できます。

間違った、または実行不可能な質問をしている可能性があります。しかし、私は自分の出力について確認したいと思います。これが可能であれば、誰でも私を助けることができますか?それを行うための標準的な方法は何ですか?

4

1 に答える 1

1

IMO 可能ですが、問題を解決するための間違ったアプローチです。エクセルが読めればそのまま出力できます。なぜそれをデータベースに入れるのですか?次に、データベース テーブルが正規化されていません。

Excelシートがある場合は、正しくアップロードしてください。ダブルチェックは意味がありません。

于 2013-03-07T08:54:46.697 に答える