Remplacer des acronymes dans un texte
Cette portion de script illustre le principe de transformation d'acronymes dans une chaine de caractères composées de tags HTML. Ce code ne transforme pas les acronymes s'ils se trouvent dans un marqueur HTML mais uniquement s'il se trouve entre deux tags consécutifs.
Portion de code
<?php
// Définition des variables globales
$txt = 'le <a href="" title="en HTML">mot HTML</a> doit être transformé ainsi que le sigle CSS...';
$tags = array();
/**
* Fonction de sauvegarde des tags HTML existants dans la chaine
*
* @author DayPass
* @param array $match tableau des tags HTML qui ont été trouvés grâce à la regex
* @return string le tag html transformé
*/
function sauveTags($match) {
global $tags;
$i = count( $tags );
$tags[ $i ] = $match[0];
return '<' . $i . '>';
}
/**
* Fonction de restauration des tags HTML qui ont été sauvegardés
*
* @author DayPass
* @param array $match tableau des tags HTML qui ont été trouvés grâce à la regex
* @return string le tag html original
*/
function restaureTags($match) {
global $tags;
return $tags[ $match[1] ];
}
// Transformation des acronyms
$txt = preg_replace_callback('`<[^>]+>`', 'sauveTags', $txt);
$txt = str_replace('HTML', '<acronym title="HyperText Markeup Language">HTML</acronym>', $txt);
$txt = str_replace('CSS', '<acronym title="Cascading Style Sheets">CSS</acronym>', $txt);
$txt = preg_replace_callback('`<([0-9]+)>`', 'restaureTags', $txt);
echo $txt;
?>
Les commentaires
Soyez le premier à réagir !