réecriture de caractères spéciaux en entités html mais pas t
Posté : 21 juil. 2009, 16:02
je veux creer une fonction de reecriture d'entités HTML
Je ne veux/pas utiliser htmlentities() car je récupère des tables de BDD dont certaines cellules contiennent du HTML
(typiquement du ><img src="http://adresse?id=nom&id2=nom2" width="1" height="1"> ...)
et je ne veux pas que cela me le transforme en
<img src="adresse?id=nom&id2=nom2" width="1" height="1">
Mais je veux quand même faire un transtypage d'accents principalement, voir d'autres entités html ne s'utilisant pas dans le langage ( autre que <,>," ...)
.
Alors la j'ai deux fncts possibles :
Peut-on se passer des utilisations repetitives de str_replace()?
demandent -elles bcp de ressource ?
vous me conseilleriez la 1ere ?
la seconde ?
une troisième?
Je ne veux/pas utiliser htmlentities() car je récupère des tables de BDD dont certaines cellules contiennent du HTML
(typiquement du ><img src="http://adresse?id=nom&id2=nom2" width="1" height="1"> ...)
et je ne veux pas que cela me le transforme en
<img src="adresse?id=nom&id2=nom2" width="1" height="1">
Mais je veux quand même faire un transtypage d'accents principalement, voir d'autres entités html ne s'utilisant pas dans le langage ( autre que <,>," ...)
.
Alors la j'ai deux fncts possibles :
function texte_to_html($chaine)
{
$sortie=$chaine;
$sortie=str_replace("à","à",$sortie);
$sortie=str_replace("â","â",$sortie);
$sortie=str_replace("ä","ä",$sortie);
$sortie=str_replace("ç","ç",$sortie);
//...
//Le code peut aller de 20 à 250 lignes en fonction
// des caracteres qu'on y met (on peut choisir de ne mettre que les plus frequents)
// ....
$sortie=str_replace("€","€",$sortie);
$sortie=str_replace("'","’",$sortie);
$sortie=str_replace("’","’",$sortie);
$sortie=str_replace("«","«",$sortie);
$sortie=str_replace("»","»",$sortie);
return $sortie;
}
//DEUXIEME METHODE
function texte_to_html($chaine)
{
$sortie=$chaine;
$sortie=htmlentities($sortie) ;
$sortie=str_replace("<","<",$sortie);
$sortie=str_replace(">",">",$sortie);
$sortie=str_replace("&","&",$sortie);
// mais là aussi, je risque d'oublier quelques elements à retranscrire en sens inverse comme ici :
//$sortie=str_replace(""",'"',$sortie);
//et puis certains caracteres speciaux ne sont pas pris en compte par htmlentities du coup faut peut être remettre un peu du code de la fonction 1...
$sortie=str_replace("'","’",$sortie);
$sortie=str_replace("’","’",$sortie);
$sortie=str_replace("«","«",$sortie);
$sortie=str_replace("»","»",$sortie);
return $sortie;
}
bref, c'est du bidouillage.Peut-on se passer des utilisations repetitives de str_replace()?
demandent -elles bcp de ressource ?
vous me conseilleriez la 1ere ?
la seconde ?
une troisième?