Xo:// html tag master

Contenu du snippet

J'ai fait cette source pour récuperer le contenu d'un tag HTML ainsi que ses propriétés. Du style:

<BODY topmargin=0 leftmargin=0 bgcolor=#FFFFFF>
<IMG src=lala.jpg>
</BODY>

Ma fonction permet de récuperer, par exemple, les propriété de body et leurs valeurs(topmargin=0, leftmargin=0, bgcolor=#FFFFFF) ainsi que le contenu du tag(<IMG src=lala.jpg>)

la fonction s'utilise comme suivant:
get_tagint($html,$tag)

La fonction renvoie un tableau:
La premiere dimension contient un autre tableau avec toutes les propriétés et leurs valeurs
La deuxieme dimension contient le contenu du tag

Exemple:

$html = "
<BODY topmargin=0 leftmargin=0 bgcolor=#FFFFFF>
<IMG src=lala.jpg>
</BODY>
";
$myarray = array();
$myarray = get_tagint($html,"BODY");

$myarray[0][topmargin] sera egal a "0"
$myarray[0][leftmargin] sera egal a "0"
$myarray[0][bgcolor] sera egal a "#FFFFFF"
$myarray[1] contiendra "<IMG src=lala.jpg>"

Attention la casse du tag a son importance, ainsi dans lexemple ci dessus
get_tagint($html,"body") ne renvera rien

J'ai testé pour des tags dont la synthaxe est du style:
<TAG prop="lala"></TAG>
<TAG prop=lala></TAG>

Je crois que c'est tout ce que j'ai a préciser.

Si vous avez des améliorations, et il y en a a faire, dites le moi.

http://rflood.free.fr/index.php?path=pictures/html-master.jpg > le code en plus clair

Source / Exemple :


function get_tagint($str_base,$str_tag)
{		
	$wprop_name_start	= 1;		
	$ftag_end_pos		= $wprop_name_end = $wprop_equal = $wprop_value = $wprop_value_start = $wprop_value_end = $prop_value_quote = 0;	 
	$thiscar 			= $tag_int = $cprop_name = $cprop_value = $cprop_name_bu = "";			
	$properties			= array();
		
	$tag_startpos 		= strpos($str_base,"<$str_tag");
	$tag_endpos			= strpos($str_base,"</$str_tag>");
	
	# - CHERCHE CHAQUE PROPRIETE DU TAG - #
	for($i=(strlen($str_tag)+2);$i<($tag_endpos-$tag_startpos);$i++)
	{		
		$thiscar = substr($str_base,$tag_startpos+$i,1);		
		if($wprop_name_start==1 && $thiscar!=" " && $thiscar!="=" && $thiscar!=">")
		{			
			$cprop_name			.= $thiscar;	
			$wprop_name_start 	 = 0;	
			$wprop_name_end	 	 = 1;
		}
		elseif($wprop_name_start==1 && $thiscar==">")
		{	
			$wprop_name_start	= $wprop_name_end = $wprop_equal = $wprop_value_start = $wprop_value_end = $prop_value_quote = 0;
			$ftag_end_pos 		= $tag_startpos+$i;					
		}		
		elseif($wprop_name_end==1 && $thiscar!=" " && $thiscar!="=")
		{
			$cprop_name			.= $thiscar;	
		}
		elseif($wprop_name_end==1 && ($thiscar==" " || $thiscar=="="))
		{
			$wprop_name_end = 0;
			if($thiscar=="=") 		{ $wprop_value_start = 1; }
			$cprop_name_bu 					= $cprop_name;
			$properties[$cprop_name_bu] 	= "tg";			
			$cprop_name 					= "";
		}
		elseif($wprop_value_start==1 && $thiscar!=" ")
		{
			if($thiscar == "\"") 	{ $prop_value_quote=1; $wprop_value_start=0; $wprop_value_end=1; }
			else					{ $prop_value_quote=0; $wprop_value_start=0; $wprop_value_end=1; $cprop_value.="$thiscar"; }
		}
		elseif($wprop_value_end==1)
		{			
			if(($prop_value_quote==1 && $thiscar=="\"") || ($prop_value_quote==0 && $thiscar==" ")) 	{ $wprop_value_end=0; $prop_value_quote=0; $wprop_name_start=1; $properties[$cprop_name_bu]=$cprop_value; $cprop_value="";}
			else 																						{ $cprop_value.="$thiscar"; }
		}		
	}
		
	# - RECUPERE LE CONTENU DU TAG - #
	$tag_int 	= substr($str_base,$ftag_end_pos+1,$tag_endpos-($ftag_end_pos+1));	
	$result 	= array();
	$result[0] 	= $properties;
	$result[1] 	= $tag_int;
	
	return $result;
}

Conclusion :


lalala