Vendre, Acheter, Echanger
|
|
|
|
|
PHP 4: 5 astuces utiles pour manipuler du code HTML
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>");
où 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 é (é),
à (à), & (&), 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]
|