- 2007年8月28日 18:10
- PHP
PHPで、変数の中身をじろじろ見たい欲求に最近かられてて、いいツールはないものかと模索中だったところ、ぴちぴちで使いやすいツールがありました。
その名も「HTTPTrace」。Windows環境でクラインアントソフトが動作し、スクリプトにライブラリを読み込んでたった1行コードを追加するだけで、クライアントソフトに変数の中身が放り込まれていきます。
表示も非常に見やすく、導入も簡単とあれば使わないわけにはいかない。すでにPHP の変数をトレースする HTTPTrace をちょっと改造してみたで、改良案が出ており、magiwoさんもこれを反映するとのことなので期待大。
ただ、個人的にはスクリプト側の文字コードを設定できれば…と思いました。
現状ではマルチバイトコードは、UTF-8の文字コードしか正常に表示されないので(ですよね?)、EUCを使っている場合は、htrace.php の function _ExportValue() を少しいじくってやればOK。
詳細な導入方法については
が参考になるかと思います。
って改造ソースも示さず終わるのはアレなので、続きを読むでいじった部分を紹介します。
htrace.phpを編集
//変更前
function htrace_set($ip='localhost', $port=6006)
{
$inc = new HTTPTraceClient();
$inc->ModeGlobal(array('ip'=>$ip, 'port'=>$port));
}
//変更後
function htrace_set($ip='localhost', $port=6006, $code=null)
{
$inc = new HTTPTraceClient();
$inc->ModeGlobal(array('ip'=>$ip, 'port'=>$port, 'code'=>$code));
}
htrace_set() に文字コードを引数として渡せるように追加。
//変更前
class HTTPTraceClient {
var $_ip = 'localhost';
var $_port = 6006;
/**
* Set Global mode
*
* @static
* @access public
* @return void
*/
function ModeGlobal($cfg=null)
{
static $_cfg;
if (is_array($cfg)) {
$_cfg = $cfg;
}
if (is_array($_cfg)) {
$this->SetServer($_cfg['ip'], $_cfg['port']);
}
}
/**
* Set HTTPTraceServer.
*
* @static
* @access public
* @return void
*/
function SetServer($ip, $port, $code)
{
$this->_ip = $ip;
$this->_port = $port;
}
//変更後
class HTTPTraceClient {
var $_ip = 'localhost';
var $_port = 6006;
var $_code = '';
/**
* Set Global mode
*
* @static
* @access public
* @return void
*/
function ModeGlobal($cfg=null)
{
static $_cfg;
if (is_array($cfg)) {
$_cfg = $cfg;
}
if (is_array($_cfg)) {
$this->SetServer($_cfg['ip'], $_cfg['port'], $_cfg['code']);
}
}
/**
* Set HTTPTraceServer.
*
* @static
* @access public
* @return void
*/
function SetServer($ip, $port, $code)
{
$this->_ip = $ip;
$this->_port = $port;
$this->_code = $code;
}
ここも同じように文字コード用の変数を追加。
//変更前
case is_string($value):
return '<textarea class="'.$mode.'">'.htmlspecialchars($value).'</textarea>';
//変更後
case is_string($value):
if(!is_null($this->_code)){
$value = mb_convert_encoding($value,'UTF-8',$this->_code);
}
return '<textarea class="'.$mode.'">'.htmlspecialchars($value).'</textarea>';
文字コードが指定されていれば、mb_convert_encoding() で文字コードをUTF-8に変更するように。とりあえず暫定的な処置ですが。
設定方法
htrace.php を読み込んだ後
htrace_set('192.0.0.0', 6007,'EUC');
htrace_set('192.0.0.0', 6007); //なにも指定しない場合はUTF-8
と htrace_set() の3番目の引数で指定してあげるだけです。
- Newer: 今さらTwitterはじめました
- Older: コードを自動ハイライトしてくれるJavaScript
Comments:0
Trackbacks:0
- TrackBack URL for this entry
- http://blog.tofu-kun.org/mt-tb.cgi/339
- Listed below are links to weblogs that reference
- PHPの変数をトレースソフト「HTTPTrace」の文字コードについて from Webプログラマー+WebデザイナーなZARU日記
