最近、Xiaoyang は PHP クラスメート ディレクトリを作成しました。生徒はここで名前、電子メール、OICQ、その他の情報を追加または変更し、mySQL データベースに保存できます。ある日、Xiaoyang は、PHP を使用して、学生がダウンロードして Foxmail アドレス帳に情報をインポートできるファイルを生成できたらいいのに、と突然思いつきました。
実行するだけですぐに、Xiaoyang はこの機能を開始しました。それはどのように達成されるのでしょうか?ここでは、名前、メールアドレス、OICQ のエクスポートについてのみ説明します。
情報が必要な場合は、Foxmail アドレス帳にインポートできます。もちろん、最初に Foxmail アドレス帳にインポートされるファイルの内容と形式を理解する必要があります。 Foxmail4.2 でアカウントのアドレス帳を開くと、メニュー バーの「ツール」-「インポート」で、Foxmail が「CSV ファイル」と「Wab ファイル」の 2 つの外部ファイルのインポートをサポートしていることがわかります。 CSV ファイルを生成することを選択します。では、Foxmail にインポートできる CSV ファイルの内容と形式は何でしょうか?まずは Foxmail から CSV ファイルをエクスポートして見てみましょう。 Foxmail のアドレス帳で空でないレコードのあるフォルダーを選択し、「ツール」-「エクスポート」-「テキスト ファイル」を実行し、ファイル名を「TEMP.CSV」として保存し、「次へ」で出力フィールドを選択します。 「名前」、「メールアドレス」、「OICQ」を選択し、「完了」をクリックすると、指定したパスに「TEMP.CSV」ファイルが生成されます。 Microsoft office シリーズをインストールしている場合、これはデフォルトで EXCEL で開かれるファイルであることがわかります。実際には、これをダブルクリックして開くと、インターフェイスが表示されます。図のようになります。
この場合の書き方はまだ分かりません。メモ帳で「TEMP.CSV」ファイルを開くと、その形式が非常に単純であることがわかります。図に示すように、ファイルの最初の行は Foxmail アドレス帳のフィールドで、他の行は値です。各フィールドと値は英語のカンマで区切られます。したがって、私たちは PHP でこの形式の CSV ファイルを生成し、他の人はそれをダウンロードして Foxmail にインポートできます。
しかし、まだ解決すべき問題が残っています。それは、ファイルが区切り値としてカンマを使用しているため、データベースのレコードに英語のカンマがあった場合はどうなるのかということです (注: 以下の記号特に指定のない限り、英語の記号を参照してください) 管理?もちろん、最初にデータ内のカンマを中国語のカンマに置き換えることもできますが、実際には別の方法があります。つまり、CSV ファイル内の対応するフィールドの両端に二重引用符 (「ie " "」) を追加すると、値を区切ります。間にある英語のカンマは区切られた値としては使用されません。また、フィールド内の 2 つの連続した英語の二重引用符 (つまり、「"」) は、区切られた値としてではなく 1 つとしてのみ表示されます。
これらを理解すると、CSV ファイルをエクスポートする PHP ファイルを作成できます:
コードをコピーします コードは次のとおりです:
//この行はスペースや改行を入れずにプログラムの先頭に配置する必要があります。以下の header() 関数では、使用前にユーザーに何も出力できないためです。
$dfname="tofoxmail.csv"; //生成されたファイル名
//mySQL データベースに接続します:
mysql_connect("localhost","yourname","yourpassword") または die("接続できませんデータベース!");
mysql_select_db("卒業生") または die("データベース エラー!");
if($action=="downit"){
$getdata=mysql_query("SELECT name , email,oicq FROM classdata"); //データテーブル内の指定されたレコードを選択します
//データがない場合:
if(@mysql_num_rows($getdata)==0){
echo "申し訳ありませんが、まだ情報がありません!";
exit;
}
//以下はダウンロード用のファイルを生成します:
header("Content-disposition: filename=$dfname") ;
header ("Content-type:unknown/unknown");
echo "name, email address, OICQ, foxaddrID"; // Foxmail アドレス帳のフィールドを出力します。 i=1;
while($row=mysql_fetch_array($getdata)){ //データ型の値を取得します
//データ内の各二重引用符を 2 つに置き換えます:
$row[name] ]=str_replace("" ","""",$row[名前]);
$row[email]=str_replace(""","""",$row[email]); $row[oicq]= str_replace(""","""",$row[oicq]);
//対応するフィールドの値に対応する行を出力します。各値は二重引用符とカンマで区切られます:
echobase64_decode( "DQo=").""$row[name]","$row[email]","$row[oicq]",$i";式、「base64_decode("DQo=" )」は改行文字です。「n」が使用されないのは、この 2 つがまったく同じではないためです。
後者を使用すると、Foxmail のインポートが失敗する可能性があります。 >*/
$i;
}
exit;
}
?>