www.philatelistes.net - PHP 4: 5 astuces utiles pour manipuler du code HTML
Identification des oblitérations Losange P.C. et Losange G.C.
Identification rapide des oblitérations losange chiffré petits et grands chiffres par une recherche multicritère.

www.philatelistes.net

Rechercher Membres Contacts Aide
Modération off     Accueil | Actualité | Annonces | Forum | Philamômes | Histoire postale | Merson | Liens

Actualité
Actualité

Evénements

Revue de presse
Le forum
Les sondages

Vendre, Acheter, Echanger
Les adresses
Ventes sur offres ou à prix nets
Petites annonces

PHP 4: 5 astuces utiles pour manipuler du code HTML


Introduction
Astuces PHP et MySQL
Les images
Caractères ASCII
Couleurs du Web
Le e-mail
Aspects légaux
Javascript

1) Placer le contenu d'un fichier HTML dans une chaîne
On utilise pour cela les fonctions file() et join(). La première place le contenu d'un fichier dans un tableau, la seconde joint toutes les entrées de ce tableau.

Exemple:

$fichier="http://developpeurs.journaldunet.com";

$contenu=join("",file($fichier));

Le "liant" des différentes entrées entre elles est spécifié en premier argument de la fonction join(). Ici, on utilise une chaîne vide.

2) Isoler un contenu situé entre deux balises HTML de commentaire
Il peut s'agir, par exemple, de placer dans une base de données divers éléments d'une page HTML, repérés par des balises de commentaires.
On utilise alors l'expression régulière suivante:

<!--[nom de la balise de début]-->(.*)<--[nom de la balise de fin]-->>


pour récupérer le contenu en question.
Le caractère . (point) désigne n'importe quel caractère (sauf le caractère de fin de ligne), tandis que le caractère * (multiplié par) signifie que ce qui précède (en l'occurence, un caractère, quel qui soit sauf le caractère de fin de ligne) peut apparaître zéro, une, ou un nombre quelconque de fois. Les parenthèses, enfin, servent à isoler le contenu figurant entre les balises définies, afin de le récupérer facilement par la suite.

Exemple:

$texte="<!--debut du titre de l'article-->Utiliser des <b>regexp</b> <i>via</i> PHP<!--fin du titre de l'article-->";
eregi("<!--debut du titre de l'article-->(.*)<!--fin du titre de l'article-->", $texte, $regs);
$titre=$regs[1];

La fonction PHP utilisée ici est eregi(), permettant d'appliquer à une chaîne (deuxième argument) une expression régulière (premier argument) indépendante de la casse (c'est le sens du i de eregi), et de récupérer le résultat dans le tableau $regs.

3) Supprimer sélectivement certaines balises
Une fonction PHP, strip_tags(), nous rend ce service, et se montre particulièrement puissante puisqu'elle permet de sélectionner les balises que l'on ne veut pas supprimer.

Exemple:

$texte="<span class=\"titre\">Utiliser des <b>regexp</b> <i>via</i> PHP</span>";
$texte=strip_tags($texte,"<b><i>");

la balise <span> sera supprimée, mais ni la balise <b>, ni la balise <i> (notez la syntaxe du second argument de la fonction).

4) Gérer les caractères spéciaux HTML
Il s'agit des caractères comme &eacute; (é), &agrave; (à), &amp; (&), etc. Là encore, une fonction PHP nous permet de remplacer tous les caractères dont il existe une "entité" équivalente en HTML en cette entité.

Exemple 1:

$texte="gérer les caractères";
echo htmlentities($texte);

Exemple 2: faire l'inverse

function unhtmlentities($string){
   $trans_tbl = get_html_translation_table(HTML_ENTITIES);
   $trans_tbl = array_flip($trans_tbl);
   return strtr($string, $trans_tbl);
}

Le deuxième example récupère les données de conversion caractère-entité du HTML sous forme de tableau associatif dont les clés sont les caractères et les valeurs les entités. En "renversant" l'association (les clés deviennent valeurs et vice-versa), on peut appliquer à une chaîne la fonction strtr() qui traduit, dans une chaîne, une série de sous-ensembles par une série d'autres, les paires étant spécifiées par un tableau associatif.

5) Insérer du texte sans erreur dans une base MySQL
Le problème se pose lorsque le texte qui doit être inséré via PHP dans une base MySQL comprend des caractères comme " (double quote) ou ' (simple quote). Dans ce cas, une fonction "clé en main" existe pour "préparer" le texte à l'insertion: il s'agit de mysql_escape_string(), qui s'applique à la chaîne concernée.

Exemple:

$texte="Moins d'erreurs avec PHP";
$connect=mysql_connect("serveur","identifiant","motdepasse");
mysql_select_db("table",$connect);
$requete_sql="INSERT INTO matable (texte) VALUES ('".mysql_escape_string($texte)."')";
mysql_query($requete_sql,$connect);
mysql_close($connect);


On évite ainsi l'échec de l'insertion dans la base, causée par une requête qui prend la forme suivante:

INSERT INTO matable (texte) VALUES 'Moins d'erreur avec PHP

[Jérôme Morlon (JDN), 23 mai 2002 , JDNet]



Imprimer cette page  | Recommander cette page à un ami


Toussaint COPPOLANI
Toussaint COPPOLANI

Copyright © 2000 www.philatelistes.net
Credits, Critiques