PHP迭代 array 查看器和HTML查看器

分享于 

10分钟阅读

Web开发

  繁體

样例图像

介绍

我写这个脚本是为了快速查看数组并在其中显示HTML数据。 有很多ide支持调试,但是有些时候需要扫描数组。 PHP的Print_r() 方法非常好,但是视觉上我觉得很不方便查看数组,特别是在递归数组中。 这里有一个解决方案。 这个脚本返回与 Print_r() 方法基本相同但它可以帮助你通过可视化分离的字符串数据,visual,inner-array-tabbing样式和的HTML源。

基本方法

<?php include("arrayViewer.php");
 $array=array("first","second","third","fourth");
 view_r($array);?>

对于返回方法,你可以使用 get_r() 方法而不是 view_rr() 方法。

echo get_r($array);

输出将采用以下格式:

1.视觉分离模式

有一个样式表文件附带的PHP脚本文件需要导入到你的网页,以启用视觉分隔模式红色。

<LINKREL= Stylesheet TYPE="text/css"HREF="arrayViewer.css">

2.内置 array 选项卡样式

这里 metThis 方法可以处理内部数组。 内部值显示一个比父项小的步骤。

<?phpinclude("arrayViewer.php");
$sub_sub_arr=array("sub_sub_item1",sub_sub_item2");
$sub_arr=array("sub_item1",sub_item2",$sub_sub_arr);
$arr=array("item1","item2",$sub_arr);
view_r($arr);?>

输出将如下所示:

HTML源模式

在 array 项中存储HTML内容的条件下,将允许在默认的web视图中显示 HTML,同时同时显示HTML源代码。

<?phpinclude("arrayViewer.php");
$chArr=array(" <div class='cls1'> </div>");
$array=array("html1"=>" <div class='clas1'> </div>",
 "tow"=>" <div class='cls2'> </div>","sub"=>$chArr);?>

然后获取普通的HTML视图:

view_r($array,"",false);

通常启用这里功能,并且可以使用选项来隐藏HTML内容和进一步关注属性。 因此,只需要调用默认方法,就可以查看源代码:

view_r($array);

要获取HTML源代码视图,请使用:

view_r($array,"",true);

第二个参数为具有内部数组的数组的递归方法调用所需的选项卡空间保留。

以下是相关的输出( 普通 vs HTML模式):

关注HTML属性

它允许将属性名指定为方法中第四个属性,从而对单个的HTML属性进行 Highlight。

view_r($array,"",true,"class");

以下是输出:

你可以为定义的HTML属性进一步指定突出显示选项,如下所示:

view_r($array,"",true,"class","background: green;font-size: 20px;color: #fff;");

然后输出为:

内部架构

function view_r($arr, $tab="", $encode=false, $focus_attr=null, $style=null) {
 $return_debug = "<div style='width: 100%;'><pre>";
 $return_debug.= "<pre>". $tab. "[</pre>";
 if (is_array($arr)) {
 foreach ($arr as$key => $value) {
 if (is_array($value)) {
 $return_debug.= "<pre>". $tab. 
 "<span class='array_key'>$key</span> => </pre>";
 $return_debug.=view_r($value, $tab. "", 
 $encode, $focus_attr, $style);
 } else {
 if ($encode) {
 $return_debug.= "<pre>". $tab. "<span class='array_key'>". 
 $key. "</span> => <span class='array_value'>". 
 $value. "</span></pre>";
 $return_debug.= "<pre>". $tab. "<span class='array_key'>". 
 $key. "</span> => <span class='array_value'>". 
 encode_html($value, $tab, $focus_attr, $style). "</span></pre>";
 }
 else $return_debug.= "<pre>". $tab. "<span class='array_key'>". 
 $key. "</span> => <span class='array_value'>". 
 $value. "</span></pre>";
 }
 //echo"<pre>".$tab." ]</pre><br/>"; }
 $return_debug.= "<pre>". $tab. "]</pre><br/>";
 }
 $return_debug.= "</pre></div>";
 return$return_debug;
}

在该方法的主 foreach 循环中,检测值是否为 array,如果是 array,则调用 view_r 方法,并且调用 encode_html()。 它还对HTML数据采用了四个参数: 选项卡,焦点属性和属性样式,如 view_r() 方法。

HTML编码方法

方法将以彩色方式显示HTML数据源,并使用聚焦特性为预定义属性。

echo encode_html(array("<div class='box'><h2 class='heading'>text</h2></div>",
 "",true,"class","color: red;");

encode_html() 方法的内部体系结构

function encode_html($str, $tab, $focus_attr=null, $style=null) {
 $skip = 0;
 $current_tag = null;
 $html_close = false;
 $html_open = false;
 $return_str = "";
 for ($i = 0; $i <strlen($str); $i++) {
 if ($str{$i} == "<" && $skip == 0) {
 $return_str.="<mark><</mark>";
 $tag_arr = get_tag($str, $i, $focus_attr, $style);
 $return_str.=$tag_arr["value"];
 $skip = $tag_arr["skip"];
 $html_open = true;
 } elseif ($str{$i} == ">" && $skip == 0) {
 $return_str.="<mark>></mark>n$tab";
 $html_close = true;
 } elseif ($str{$i} == "'" && $skip == 0 && $html_open) {
 //$return_str.="<quote>'</quote>";$quoted = get_quoted_value($str, $i, $focus_attr, $style, $current_tag);
 $return_str.=$quoted['value'];
 $skip = $quoted['skip'];
 } elseif ($str{$i} == "" && $skip == 0 && $html_open) {
 //$return_str.="<quote>'</quote>";$current_tag = get_current_tag($str, $i);
 $attr = get_attr($str, $i, $focus_attr, $style);
 $return_str.=$attr['value'];
 $skip = $attr['skip'];
 } elseif ($skip> 0) {
 $skip--;
 }
 else $return_str.=$str{$i};
 }
 return$return_str;
}
function get_current_tag($str, $index) {
 for ($new = $index + 1; $new <strlen($str); $new++) {
 if ($str{$new}!= "=" && $str{$new}!= "/" && 
 $str{$new}!= ">" && $str{$new}!= "<") {
 $cur_tag.=$str{$new};
 } else {
 break;
 }
 }
 return trim($cur_tag);
}
function get_attr($str, $index, $focus_attr=null, $style=null, $current_tag=null) {
 $count = 0;
 $return_quoted_arr = null;
 if (isset($current_tag))
 $quoted_text.="<attr". check_focus($focus_attr, $current_tag, $style). ">";
 else $quoted_text.="<attr". check_focus($focus_attr, "attr", $style). ">";
 for ($s = $index + 1; $s <strlen($str); $s++) {
 if ($str{$s}!= "=" && $str{$s}!= ">" && $str{$s}!= "/")
 $quoted_text.=$str{$s};
 else {
 $quoted_text.="</attr>";
 $count = $s;
 break;
 }
 }
 $return_quoted_arr["skip"] = $count - $index - 1;
 $return_quoted_arr["value"] = $quoted_text;
 return$return_quoted_arr;
}
function get_tag($str, $index, $focus_attr=null, $style=null) {
 $count = 0;
 $return_quoted_arr = null;
 $quoted_text.="<tag". check_focus($focus_attr, "tag", $style). ">";
 for ($s = $index + 1; $s <strlen($str); $s++) {
 if ($str{$s}!= "" && $str{$s}!= ">")
 $quoted_text.=$str{$s};
 else {
 $quoted_text.="</tag>";
 $count = $s;
 break;
 }
 }
 $return_quoted_arr["skip"] = $count - $index - 1;
 $return_quoted_arr["value"] = $quoted_text;
 return$return_quoted_arr;
}
function get_quoted_value($str, $index, $focus_attr=null, 
 $style=null, $current_tag=null) {
 $count = 0;
 $return_quoted_arr = null;
 if (isset($current_tag))
 $quoted_text.="<qoute>'</quote><attrvalue". 
 check_focus($focus_attr, $current_tag, $style). 
 check_focus($focus_attr, "attrvalue", $style). ">";
 else $quoted_text.="<qoute>'</quote><attrvalue". 
 check_focus($focus_attr, "attrvalue", $style). ">";
 for ($s = $index + 1; $s <strlen($str); $s++) {
 if ($str{$s}!= "" && $str{$s}!= "'")
 $quoted_text.=$str{$s};
 else {
 $quoted_text.="</attrvalue><qoute>'</quote>";
 $count = $s;
 break;
 }
 }
 $return_quoted_arr["skip"] = $count - $index;
 $return_quoted_arr["value"] = $quoted_text;
 return$return_quoted_arr;
}
function check_focus($focus_attr, $attr, $style) {
 if ($focus_attr == null) {
 return"";
 } else {
 if ($focus_attr == $attr) {
 return" style='color: white; font-size: large;background: black;". 
 $style. "'";
 }
 elsereturn"";
 }
}

PHP  VIEW  Viewer  ARR  array  iterative  
相关文章