Comparaison insensible à la casse dans une liste (array)
Posté : 27 août 2006, 13:52
Bonjour à tous 
Tout nouveau dans ce forum, et totalement débutant en Php, je bidouille en ce moment un petit code pour produire un petit sommaire à partir d'un texte fourni.
Ce sommaire respecte une syntaxe particulière, propre au CMS SPIP (pour ceux qui connaissent), mais la difficulté n'est pas vraiment là... je m'explique :
Je voudrais construire mon petit sommaire en récupérant les titres présents dans le texte d'un article. Ces titres sont tous entourés de 3 accolades, par exemple :
{{{Ceci est un titre}}}
Bien, grâce à un code que j'ai dégoté, j'arrive à récupérer tous les titres, voici l'instruction qui me permet de faire ça :
Maintenant, je souhaite comparer le contenu du second array pour savoir si un titre particulier existe, à savoir "Sommaire", c'est à dire que si ce titre n'existe pas dans la liste des titres récupérés, alors je ne construit pas le sommaire, dans le cas contraire je construit le sommaire de l'article.
Bon, la difficulté que je rencontre c'est que chaque rédacteur du site risque d'écrire le titre "Sommaire" un peu à sa sauce, parfois ce sera tout en minuscules, parfois tout en majuscules, etc... bref, pour l'instant j'utilise ce bout de code pour traiter les différents cas de figure les plus courrants :
... sans parler que ça ne tient pas compte d'autres cas de figure qui pourraient se présenter (faute de frappe, etc.)...
Alors, ma question, comment savoir que le terme "Sommaire" existe bien dans la liste "$titresList" sans tenir compte de la casse ?
Merci à tous ceux qui voudront bien se pencher sur mon petit problème
Tout nouveau dans ce forum, et totalement débutant en Php, je bidouille en ce moment un petit code pour produire un petit sommaire à partir d'un texte fourni.
Ce sommaire respecte une syntaxe particulière, propre au CMS SPIP (pour ceux qui connaissent), mais la difficulté n'est pas vraiment là... je m'explique :
Je voudrais construire mon petit sommaire en récupérant les titres présents dans le texte d'un article. Ces titres sont tous entourés de 3 accolades, par exemple :
{{{Ceci est un titre}}}
Bien, grâce à un code que j'ai dégoté, j'arrive à récupérer tous les titres, voici l'instruction qui me permet de faire ça :
preg_match_all("|\{\{\{(.*)\}\}\}|U", $texteOrig, $regs);
Où "$texteOrig" est le texte entier de l'article et "$regs" est le résultat de la recherche, qui se matérialise par deux array, le second contenant les titres sans les accolades dont je me sert.Maintenant, je souhaite comparer le contenu du second array pour savoir si un titre particulier existe, à savoir "Sommaire", c'est à dire que si ce titre n'existe pas dans la liste des titres récupérés, alors je ne construit pas le sommaire, dans le cas contraire je construit le sommaire de l'article.
Bon, la difficulté que je rencontre c'est que chaque rédacteur du site risque d'écrire le titre "Sommaire" un peu à sa sauce, parfois ce sera tout en minuscules, parfois tout en majuscules, etc... bref, pour l'instant j'utilise ce bout de code pour traiter les différents cas de figure les plus courrants :
preg_match_all("|\{\{\{(.*)\}\}\}|U", $texteOrig, $regs);
$sommList = array("sommaire", "Sommaire", "SOMMAIRE");
$sommText = "";
$titresList = $regs[1];
if (in_array ($sommList[0], $titresList)) {
$sommText = $sommList[0];
} elseif (in_array ($sommList[1], $titresList)) {
$sommText = $sommList[1];
} elseif (in_array ($sommList[2], $titresList)) {
$sommText = $sommList[2];
} else {
$sommText = "";
};
Mais je trouve ça un peu lourdingue Alors, ma question, comment savoir que le terme "Sommaire" existe bien dans la liste "$titresList" sans tenir compte de la casse ?
Merci à tous ceux qui voudront bien se pencher sur mon petit problème