Home > PHP > PHPの変数をトレースソフト「HTTPTrace」の文字コードについて

PHPの変数をトレースソフト「HTTPTrace」の文字コードについて

  • Posted by: zaru
  • 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番目の引数で指定してあげるだけです。

Comments:0

Comment Form

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日記

Home > PHP > PHPの変数をトレースソフト「HTTPTrace」の文字コードについて

Profile

zaru

Name : zaru

Webプログラマ+Webデザイナで、Webディレクタやってます。Twitterやっているので、ぜひフォローしてやってくださいませ。Twitter - zaru。また、そのほかのプロフィールについては、iddy - zaruを見てください。

Search
Feeds
Others

Return to page top