Page 1 sur 1

Fonctions utlitaires manipulation HTML : reflexion

Posté : 29 avr. 2010, 20:08
par supercanard
Bonsoir,

Je réfléchis en ce moment a me constituer une librairie de fonctions dédié a la manipulation du HTML, car je me rends compte que c'est assez rébarbatif.

Exemple, générer une liste HTML avec un foreach... ( <ul><li>...</li>...</ul> )

Il suffirait d'une fonction, auquel on passe en argument un tableau ou une chaine séparé par des virgules par exemple, pour qu'elle retourne la liste, rien de compliqué.

Mais pour qu'elle puisse être adapté à toute situation, on pourrait envisager de pouvoir appliquer des attributs (id et classe CSS) à la balise <ul> ce qui donnerais :
$ul = nom_fonction($data, 'mon_id', 'ma_classe');
Mais on pourrait aussi avoir d'autres besoin, comme appliquer une classe CSS aux éléments li, ou d'autres choses diverses et variées, et donc au final la fonction pourrais avoir une liste d'arguments ingérable.

Je me disais donc qu'on pourrais réduire cette liste d'arguments, un seul arguments pourrait contenir touts les attributs HTML a appliquer, soit en passant un array ( pas très pratique... ) soit une chaine qu'il suffirait de traiter avec un explode par exemple :
$ul = nom_fonction($data, 'id:mon_id,class:ma_classe');
Que pensez vous de cette idée ?

Re: Fonctions utlitaires manipulation HTML : reflexion

Posté : 30 avr. 2010, 10:20
par stealth35
je trouve qu'un array c'est plus pratique et plus portable

Re: Fonctions utlitaires manipulation HTML : reflexion

Posté : 30 avr. 2010, 10:50
par telnes
hello

pouquoi pas

tiens une brique
function creatHtmlSelect($name,$array,$selected,$attribut){
	
		$tmp = '<Select name="'.$name.'" '.$attribut.' >'."\n";
        
        foreach($array as $key=>$value){
        	
        	if( $key == $selected){
        		$tmp .= '<option value="'.$key.'" SELECTED >'.$value.'</option>'."\n";
			}
			else{
				$tmp .= '<option value="'.$key.'">'.$value.'</option>'."\n";	
			}	
        }
        $tmp .= '</select>';
		return $tmp;	
}
++

Re: Fonctions utlitaires manipulation HTML : reflexion

Posté : 30 avr. 2010, 17:53
par supercanard
A mon tour, je pose mon idée devenu concrète ;)

<?php
function sos_decode_arguments($chaine){
	$arg = array();
	$i = 0;
	foreach(explode(',', $chaine) as $k=>$v){
		if(preg_match('#(.*):(.*)#', $v)){
			$v = explode(':', $v);
			$arg[$i][0] = $v[0];
			$arg[$i][1] = $v[1];
			$i++;
		}
	}
	return $arg;
}

function sos_ul($data, $attributs = ''){
	$output = '';
	$attr = '';
	foreach(sos_decode_arguments($attributs) as $k=>$attribut){
		$attr .= $attribut[0].'="'.$attribut[1].'" ';
	}
	if(count($data) > 0){
		$output .= '<ul '.$attr.'>';
		foreach($data as $k=>$v){
			$output .= '<li>'.$v.'</li>';
		}
		$output .= '</ul>';
	}
	return $output;
}

$data = array('a', 'b', 'c');
echo sos_ul($data, 'id:nav,class:nav');
?>
Donnera :
<ul id="nav" class="nav" ><li>a</li><li>b</li><li>c</li></ul>

Re: Fonctions utlitaires manipulation HTML : reflexion

Posté : 03 mai 2010, 22:42
par stealth35
tu peux faire un preg_replace pour tes attributs :wink:
$opts = 'id:nav,class:nav';
echo preg_replace('/(\w+)(:)([^,:]*)(,)?/u', '$1="$3" ', $opts);

Re: Fonctions utlitaires manipulation HTML : reflexion

Posté : 03 mai 2010, 23:43
par Nagol
personnellement je ne vois pas l'intérêt, car si c'est vrai que c'est rébarbatif de se taper des copié collé (arme ultime du codeur) en définitive on obtient un code au pire qui ne gérera que 10% des besoins, au mieux un code qui couvrira une gamme importante de besoin mais nécessitera un apprentissage et un temps de manipulation plus long que le copié/collé qu'on aurait fait.

Ce n'est que mon avis :)

Re: Fonctions utlitaires manipulation HTML : reflexion

Posté : 04 mai 2010, 00:11
par AB
personnellement je ne vois pas l'intérêt, car si c'est vrai que c'est rébarbatif de se taper des copié collé (arme ultime du codeur) en définitive on obtient un code au pire qui ne gérera que 10% des besoins, au mieux un code qui couvrira une gamme importante de besoin mais nécessitera un apprentissage et un temps de manipulation plus long que le copié/collé qu'on aurait fait.

Ce n'est que mon avis :)
Avis que je partage :wink:

Re: Fonctions utlitaires manipulation HTML : reflexion

Posté : 04 mai 2010, 00:52
par stealth35
ouais mais ca peu être un bon exercice, c'est plus dans se sens qui faut le voir.

Re: Fonctions utlitaires manipulation HTML : reflexion

Posté : 04 mai 2010, 02:53
par Nagol
ouais mais ca peu être un bon exercice, c'est plus dans se sens qui faut le voir.
Sure si c'est purement pas envie de s'exercer pourquoi pas, mais penser à faire ça et avoir un vrai résultat qui représente un interêt: non :)
Au revanche la ou ça devient plus intéressant c'est de coder de façon à produire des éléments graphiques qui n'existe pas de façon native en html.

Re: Fonctions utlitaires manipulation HTML : reflexion

Posté : 04 mai 2010, 02:59
par AB
ouais mais ca peu être un bon exercice, c'est plus dans se sens qui faut le voir.
Bof je trouve ça assez moyen comme exercice... j'vois pas trop les algo intéressants qu'on pourrait faire, le savoir faire qu'on pourrait en tirer.

D'un autre côté on apprend toujours un peu quelque chose mais là ça risque d'être vraiment peu et y'a tellement d'autres choses à faire en php pour des résultats bien plus rentables. A mon avis c'est un bien piètre investissement mais comme dit Nagol, ce n'est que mon avis :wink:

Remarques au pire ça apprend à faire le tri dans ses exercices et/ou dans les automatisations utiles/possibles/peu utilisables/non rentables :)