JavaScriptでprint_r()
※以前別の場所で書いた文章を備忘的に書き記しておきます。
【投稿年月日】2011-01-19 【ジャンル】JavaScript
XML&XBRL解析ライブラリを作成中に、JavaScriptでPHPのprint_r()を実現させることができたので、せっかくですから公開します。参考(と言うか、ほぼそのまま使っているんですけど..)にしたのは下記サイト。感謝です。
Dump() Function - Javascript equivalent of PHP's print_r()
binnyva.blogspot.com/2005/10/dump-function-java...
ソース
// http://binnyva.blogspot.com/2005/10/dump-function-javascript-equivalent-of.html
function print_r(arr, br, nbsp) {
br = (br) ? br : "\n";
nbsp = (nbsp) ? nbsp : " ";
function dump(arr, br, nbsp, level) {
var dumped_text = "";
if(!level) {
level = 0;
}
//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0; j<level+1; j++) {
level_padding += nbsp + nbsp;
}
if(typeof(arr)=="object") { //Array/Hashes/Objects
for(var item in arr) {
var value = arr[item];
if(typeof(value)=="object") { //If it is an array,
dumped_text += level_padding + "[" + item + "] => Array" + br;
dumped_text += nbsp + level_padding + "(" + br + dump(value, br, nbsp, level+1) + nbsp + level_padding + ")" + br;
}else {
dumped_text += level_padding + "[" + item + "] => '" + value + "'" + br;
}
}
}else { //Stings/Chars/Numbers etc.
dumped_text = "===>" + arr + "<===(" + typeof(arr) + ")";
}
return dumped_text;
}
return "Array" + br + nbsp + "(" + br + dump(arr, br, nbsp) + nbsp + ")";
}
元のスクリプトからの主な変更点は以下の通り。function print_r(arr, br, nbsp) {
br = (br) ? br : "\n";
nbsp = (nbsp) ? nbsp : " ";
function dump(arr, br, nbsp, level) {
var dumped_text = "";
if(!level) {
level = 0;
}
//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0; j<level+1; j++) {
level_padding += nbsp + nbsp;
}
if(typeof(arr)=="object") { //Array/Hashes/Objects
for(var item in arr) {
var value = arr[item];
if(typeof(value)=="object") { //If it is an array,
dumped_text += level_padding + "[" + item + "] => Array" + br;
dumped_text += nbsp + level_padding + "(" + br + dump(value, br, nbsp, level+1) + nbsp + level_padding + ")" + br;
}else {
dumped_text += level_padding + "[" + item + "] => '" + value + "'" + br;
}
}
}else { //Stings/Chars/Numbers etc.
dumped_text = "===>" + arr + "<===(" + typeof(arr) + ")";
}
return dumped_text;
}
return "Array" + br + nbsp + "(" + br + dump(arr, br, nbsp) + nbsp + ")";
}
- Array()で入れ子状に表示
- 改行や空白がカスタマイズ可能
書式は、print_r(arr, br, nbsp) 。パラメータを指定することで、改行(br)と空白(nbsp)を変更することが可能です。
A. alert() で使う場合
var ary = ["a", "b", "c"];
var txt = print_r(ary);
alert(txt);
var txt = print_r(ary);
alert(txt);
B. html 出力する場合
var ary = ["a", "b", "c"];
var txt = print_r(ary, "<br />", " ");
document.write(txt);
var txt = print_r(ary, "<br />", " ");
document.write(txt);
サンプルは下記サイトのajaxで確認できます。「Sample XML Parse」の17個のファイルのどれか(「jpfr-asr-E02144-000-2009-03-31-01-2009-06-24-information.xml」など)をクリックすれば下方に表示されます。
XBRL for PHP - XML Perse
mzstyle.s147.xrea.com/xbrlphp/?id=xml&sample=7
ちなみに、上記サイトは、XML&XBRL解析ライブラリのサンプルサイトですが、これについては、後ほど別エントリで触れることにします。
EDIUNET | PHP/MySQL | 独り言 | 提供サービス | JavaScript