Fonction de filtrage de langue ?

Répondre
rozwel
le 09/01/2005 à 22:51
rozwel
Bonjour,

Je suis en train de travailler sur un mod de dotclear (blogware) pour essayer d'améliorer la gestion de la multilocalisation. Ce dont j'ai besoin, c'est d'une fonction capable de filtrer une chaine (potentiellement sur plusieurs lignes) de façon à ne garder que :
- les éléments dont la langue n'est pas spécifiée
- les éléments dont la langue est spécifiée et qui correspondent à la langue passée en paramètre

Pour ceux qui connaissent le CMS Xoops, c'est ce que fait le hack de langues mais le code est trop touffu et je ne retrouve pas la fonction.

L'idée est que ma fonction doit ressembler à ça :

chaîne function filter_language($langue,$chaine)

Exemple d'appel :
filter_language('fr','<div>[fr]Je teste[/fr][en] to see if it works[/en] bien comme il faut<div>')

devrait retourner :

<div>Je teste bien comme il faut</div>

Le hic c'est que je suis absolument nul avec les expressions régulières et là le schéma m'a l'air un peu costaud puisqu'il faut que je supprime de la chaine les éléments qui NE RESPECTENT PAS mon pattern... et là tout s'embrouille.

Pour ce qui est de la spécification de la langue, le coup des balises style BB-code ce n'est qu'un exemple et j'hésite encore entre ça et l'utilisation de l'attribut xml:lang.

Quelqu'un pourrait-il m'aider, me donner au moins un point de départ, une référence, un truc qui pourrait me permettre de faire ça bien ?

Merci d'avance

rozwel
zebden
le 10/01/2005 à 14:03
zebden
Y a ptete mieux a faire mais bon voila une petite fonction codé à la va vite (mais qui fonctionne ^^

<?php
function filtre_langue($chaine, $langue) {

// On remplace ls balises de la langue choisie
$exp = '`\['.$langue.'\](.+)\[\/'.$langue.']`';
$chaine = preg_replace($exp, "$1" , $chaine);

// On enleve text + balise.
$exp = '`\[(.*)\](.+)\[\/(.*)\]`';
$chaine = preg_replace($exp, '', $chaine);

return $chaine;
}
?>
zebdinou pour les intimes / Blog : http://www.zebden.fr
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours