2010 年 2 月 4 日 のアーカイブ

PHP:MBFpdfでバグ!!["]が出力できない

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

MBFpdfでバグを発見した!!バージョンは1.0b。
["](ダブルクォーテーション)が出力できないというものだ。

$l+=$ascii ? $cw[$c] : $hwkana ? 500 : 1000;

上のソースの$cw[$c]の$cにダブルクォーテーションが入ってるのだが、
undefined index ” と言われてしまう…。
そこで、$cwをprint_rで表示してみたら、
array(…,[\"] => 500, …);
という記述を発見。ダブルクォーテーションあるけれど、バックスラッシュでエスケープされてるじゃないか!?まあこれが正しいと仮定した場合、$cw["]は定義されていないわけだから、$cが["]の場合、$c = ‘\”‘;にしてしまえばいいんじゃないかと思ったので、mbfpdf.phpに手を入れることを決意!!

MBMultiCellメソッドを修正。

//Get next character
$c=$s[$i];
// 以下3行を追加
if($c === '"'){
	$c = '\"';
}

その後、MBWriteメソッドを修正。
行番号は、上記の作業後なので、この付近と思ってください。

//Get next character
$c=$s[$i];
// 以下3行を追加
if($c === '"'){
	$c = '\"';
}

こうしたところ、ダブルクォーテーションがPDFファイルに出力できた。


Get Adobe Flash playerPlugin by wpburn.com wordpress themes