2010年9月13日 星期一

PHP Html 轉成陣列(array)

=========標題========
PHP Html 轉成陣列(array)





PHP html array
PHP html to array
php html 轉 array
========HTML========
<html id ="headmenu"><head><meta id="d" /><meta /><head/></html><div id ="headmenu">3<p>sd</p><p>sd</p>bb</div>

========結果=========
array(2) {
[0]=>
array(4) {
["tag"]=>
string(6) ""
["id"]=>
string(8) "headmenu"
["text"]=>
string(0) ""
["next"]=>
array(1) {
[0]=>
array(3) {
["tag"]=>
string(6) ""
["text"]=>
string(0) ""
["next"]=>
array(2) {
[0]=>
array(2) {
["tag"]=>
string(6) ""
["id"]=>
string(1) "d"
}
[1]=>
array(1) {
["tag"]=>
string(6) ""
}
}
}
}
}
[1]=>
array(4) {
["tag"]=>
string(5) "


"
["id"]=>
string(8) "headmenu"
["text"]=>
string(3) "3bb"
["next"]=>
array(2) {
[0]=>
array(3) {
["tag"]=>
string(3) ""
["text"]=>
string(2) "sd"
["next"]=>
array(0) {
}
}
[1]=>
array(3) {
["tag"]=>
string(3) ""
["text"]=>
string(2) "sd"
["next"]=>
array(0) {
}
}
}
}
}
========程式=========
function c2a($c){
  $t="";$re = array();$n=count($re);
  $nset=0;
  $ca=explode("<",$c);
  for($i=0;$i
   if($i>0){
    $ca[$i] = explode(">",$ca[$i]);
    
    $ck = $this->c2i($ca[$i][0]);
    if(!strstr($ca[$i][0],"/")){
     $nset++;
     if($this->taginfo($ck["tag"])){
      $nset--;
      if($nset==0){
       $n=count($re);
       $re[$n]=$this->c2i($ca[$i][0]);
       $n++;
      }else{
       $t .= "<".$ca[$i][0].">";
      }
     }else{
      if($nset==1){
       //echo "a("."<".$ca[$i][0].">".")";
       $n=count($re);
       $re[$n]=$this->c2i($ca[$i][0]);
       $re[$n]["text"] = $ca[$i][1];       
      }else{
       //echo "b("."<".$ca[$i][0].">".")";
       $t .= "<".$ca[$i][0].">".$ca[$i][1];       
      }
     }
    }else{
     $nset--;
     if($this->taginfo($ck["tag"])){
      $nset++;
      if($nset==0){
       $n=count($re);
       $re[$n]=$this->c2i($ca[$i][0]);
       $n++;
      }else{
       $t .= "<".$ca[$i][0].">";
      }
     }else{
      if($nset==0){
       //echo "c("."<".$ca[$i][0].">".")";     
       $re[$n]["next"] = $this->c2a($t);
       $t="";$n=count($re);     
      }else{
       //echo "d("."<".$ca[$i][0].">".")";
       if(!isset($re[$n]["text"]))$re[$n]["text"]= $ca[$i][1]; else $re[$n]["text"].= $ca[$i][1];
       $t .= "<".$ca[$i][0].">".$ca[$i][1];       
      }
     }
    } 
   }
  }
  return $re;  
 }

====================================
目前沒有常用到此FUNCTION
但知道一定有一些問題
請大家如果有發現問題,請告訴我,我會修正

沒有留言:

張貼留言