PHPで”表示”という字をPOSTしたら文字化けした人はいませんか?


私しました。。。人間予想していない事が起こるとパニックに陥ります。


で冷静になり、調べた結果「\マークがある場合は、もう一個\マークをつけましょう」というMagic Quote GPC機能が働いているからというのが判明。


「え!?表示に\マークはないじゃん?」と思ったんですが、Shift_JISの場合”表”という字は二つの数字で表せれて、その内の1つが\マークと同じ数字なんです。


↓が\マークと同じ数字で作られている文字列

表 予 能 申 ソ 十 構 暴 圭 貼


「勝手にやってるんじゃ、どーしよもねーじゃん」って思うかも知れませんが次の方法で解決できるみたいです。


POSTされた場合$_POST連想配列に格納されますが、格納される時には時すでに遅しなので


$_POST['POSTDATA'] = stripslashes($_POST['POSTDATA']);



ってやると、もう一個つけた\マークがのぞかれます。


「毎回やるんかい!?」って思ったら・・・php.iniの次の設定を変更すれば、機能自体をオフにできます。


magic_quotes_gpc = Off




ということで、C#でEnterキーを押した後にフォーカスを移動させる方法を記載。



フォームのKeyDownイベントに次の文を書く

-- code ----------

switch (e.KeyCode) {
case Keys.Enter:
this.SelectNextControl(this.ActiveControl, (e.Modifiers != Keys.Shift), true, true, true);

break;

}

-----------------

これで、コントロールのフォーカスがずれてはいくんですが、、、音がします。


音がならないPCならいいんですが、音がなるPCだとやかましいから消します。


今度はフォームのKeyPressイベントに次の文を書く

-- code ---------------

if(e.KeyChar == (char)13)
e.Handled = true;
----------------------


これで、Enterキーによるフォーカス移動の実装が完了。

とある案件でPHPで複数ページの帳票を出力する要件がありました。


もともと.NETがメインでやっていたいんで、早速ネットで検索です。


見つけた答えが2パターン


旗 PDFLibライブラリの利用


旗 FPDFライブラリの利用



PDFLibライブラリの利用の方法はコンパイルがどうのとかで、使えない可能性もあったので、利用せず。

(時間との戦いでもあったので、簡単に利用できる方がよかった)


FPDFライブラリを採用!!


■ライブラリの公式サイト

http://www.fpdf.org/


■公式の日本語モジュール

http://www.fpdf.org/download/


■公式のライブラリを日本語仕様に拡張したライブラリ

http://www.geocities.jp/rui_hirokawa/php/pdf/



今回は公式のライブラリ+公式の日本語モジュールを採用しました。


問題があったのは半角文字と全角文字の文字幅が一緒になってしまったことです。


これは、半角、全角の明確な指定もなかったので、今回はそのまま利用しました。


ちなみに、これの対応策は↓に書いてありました。

http://fpdf.japansite.net/modules/newbb/viewtopic.php?topic_id=39&forum=6&post_id=159



このライブラリは使い方が簡単で、ダウンロードした公式ライブラリのフォルダ内に、日本語モジュールをコピーし、アップするだけで利用可能です。


たとえば、同階層にライブラリのフォルダがある場合は次の文で直接HTTP出力にPDFを直接出力してくれます。


-- code ----


<?php
require('fpdf/japanese.php');

$pdf=new PDF_Japanese();
$pdf->AddSJISFont();
$pdf->Open();
$pdf->AddPage();
$pdf->SetFont('SJIS','',9);
$pdf->Text(10, 10, "PHPでPDFを出力するテスト");

$pdf->Output();
?>


-------------



クラスのメソッド、プロパティの仕様はライブラリ内にヘルプがあるんで、それを参照すれば問題なく利用できます。



プログラミングPHP 第2版/Rasmus Lerdorf
¥3,990
Amazon.co.jp