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