j'ai un petit problème à vous soumettre concernant du traitement de
chaine de caractères avec une regexp.
Le but est de modifier la présentation d'un texte à la volée en se
basant sur des balises internes, mais pas en faisant un simple
changement de balises. Il y a tout un traitement de fait sur le texte en
fonction de l'attribut de la balise.
Par exemple, ce texte-ci:
j'ai traduit [lang="en"]my taylor is rich[/lang] par [lang="kn"]grrr ahn
rho[/lang] et c'est cool.
donnerait après traitement:
j'ai traduit <p>my <u>taylor</u> is <b>rich</b></p> par <p><u>grrr</u>
ahn <u>rho</u></p> et c'est cool.
Il me faut donc trouver une regexp capable de sortir chaque occurence de
[lang="$ln"]...[/lang], de traiter en fonction de $ln et de réinjecter
ça à la place de ce qui y était initialement.
Sachant que le traitement se fait par une classe qui me permet de mettre
en forme en fonction du langage.
Merci d'avance à ceux qui pourront me donner le point de départ :)
P.S.: lang="kn" => Klingon
--
Aide informatique: http://help-info.forumactif.com
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
Par exemple, ce texte-ci: j'ai traduit [lang="en"]my taylor is rich[/lang] par [lang="kn"]grrr ahn rho[/lang] et c'est cool. donnerait après traitement: j'ai traduit <p>my <u>taylor</u> is <b>rich</b></p> par <p><u>grrr</u> ahn <u>rho</u></p> et c'est cool.
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
Par exemple, ce texte-ci:
j'ai traduit [lang="en"]my taylor is rich[/lang] par [lang="kn"]grrr ahn
rho[/lang] et c'est cool.
donnerait après traitement:
j'ai traduit <p>my <u>taylor</u> is <b>rich</b></p> par <p><u>grrr</u>
ahn <u>rho</u></p> et c'est cool.
Par exemple, ce texte-ci: j'ai traduit [lang="en"]my taylor is rich[/lang] par [lang="kn"]grrr ahn rho[/lang] et c'est cool. donnerait après traitement: j'ai traduit <p>my <u>taylor</u> is <b>rich</b></p> par <p><u>grrr</u> ahn <u>rho</u></p> et c'est cool.
Ma question subsidiaire, c'est comment faire pour bien prendre ce qui est strictement contenu entre [lang=XX] et [/lang]? Parce que si jamais dans mon texte à traiter, j'ai un truc du genre [:elo] (c'est de la phonétique), ça plante.
bref, grosso modo il faudrait que je trouve par quoi remplacer [^[]* pour avoir un [^[/lang]]* (qui ne marche pas)
Merci bien
-- Aide informatique: http://help-info.forumactif.com Humour: http://www.chatfou.com Tchattez en liberté: http://www.crazy-irc.net
Bon, ça marche presque nickel, voici mes 2 lignes utiles:
Ma question subsidiaire, c'est comment faire pour bien prendre ce qui
est strictement contenu entre [lang=XX] et [/lang]?
Parce que si jamais dans mon texte à traiter, j'ai un truc du genre
[:elo] (c'est de la phonétique), ça plante.
bref, grosso modo il faudrait que je trouve par quoi remplacer [^[]*
pour avoir un [^[/lang]]* (qui ne marche pas)
Merci bien
--
Aide informatique: http://help-info.forumactif.com
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net
Ma question subsidiaire, c'est comment faire pour bien prendre ce qui est strictement contenu entre [lang=XX] et [/lang]? Parce que si jamais dans mon texte à traiter, j'ai un truc du genre [:elo] (c'est de la phonétique), ça plante.
bref, grosso modo il faudrait que je trouve par quoi remplacer [^[]* pour avoir un [^[/lang]]* (qui ne marche pas)
Merci bien
-- Aide informatique: http://help-info.forumactif.com Humour: http://www.chatfou.com Tchattez en liberté: http://www.crazy-irc.net
CrazyCat
Bon, après essai:
$essai = 'j'ai traduit [lang="en"]my taylor is rich[/lang] par [lang="kn"]grrr ahn rho[/lang] et c'est cool.';
function hl_words($matches) { $parse = new parser(); $parse->lang = $matches[1]; return $parse->parse_it(); }
Il doit y avoir un problème avec mon pattern parce que seul la première langue est modifié, l'autre est prise comme du texte normal.
-- Aide informatique: http://help-info.forumactif.com Humour: http://www.chatfou.com Tchattez en liberté: http://www.crazy-irc.net
Olivier Miakinen
$pattern = "µ[lang=([a-z]+)]([^[]*)[/lang]µ";
Ma question subsidiaire, c'est comment faire pour bien prendre ce qui est strictement contenu entre [lang=XX] et [/lang]? Parce que si jamais dans mon texte à traiter, j'ai un truc du genre [:elo] (c'est de la phonétique), ça plante.
bref, grosso modo il faudrait que je trouve par quoi remplacer [^[]* pour avoir un [^[/lang]]* (qui ne marche pas)
$pattern = "µ[lang=([a-z]+)](.*)[/lang]µU";
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
$pattern = "µ[lang=([a-z]+)]([^[]*)[/lang]µ";
Ma question subsidiaire, c'est comment faire pour bien prendre ce qui
est strictement contenu entre [lang=XX] et [/lang]?
Parce que si jamais dans mon texte à traiter, j'ai un truc du genre
[:elo] (c'est de la phonétique), ça plante.
bref, grosso modo il faudrait que je trouve par quoi remplacer [^[]*
pour avoir un [^[/lang]]* (qui ne marche pas)
$pattern = "µ[lang=([a-z]+)](.*)[/lang]µU";
--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
Ma question subsidiaire, c'est comment faire pour bien prendre ce qui est strictement contenu entre [lang=XX] et [/lang]? Parce que si jamais dans mon texte à traiter, j'ai un truc du genre [:elo] (c'est de la phonétique), ça plante.
bref, grosso modo il faudrait que je trouve par quoi remplacer [^[]* pour avoir un [^[/lang]]* (qui ne marche pas)
$pattern = "µ[lang=([a-z]+)](.*)[/lang]µU";
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
CrazyCat
Olivier Miakinen wrote:
bref, grosso modo il faudrait que je trouve par quoi remplacer [^[]* pour avoir un [^[/lang]]* (qui ne marche pas) $pattern = "µ[lang=([a-z]+)](.*)[/lang]µU";
mis à part qu'il faut aussi autoriser le n, ça fonctionne parfaitement. regexp finale: $pattern = "µ[lang=([a-z]+)]((n|.)*)[/lang]µU";
Je ne m'y ferais jamais à toutes ces options!!!!
Un grand merci à toi -- Aide informatique: http://help-info.forumactif.com Humour: http://www.chatfou.com Tchattez en liberté: http://www.crazy-irc.net
Olivier Miakinen wrote:
bref, grosso modo il faudrait que je trouve par quoi remplacer [^[]*
pour avoir un [^[/lang]]* (qui ne marche pas)
$pattern = "µ[lang=([a-z]+)](.*)[/lang]µU";
mis à part qu'il faut aussi autoriser le n, ça fonctionne parfaitement.
regexp finale: $pattern = "µ[lang=([a-z]+)]((n|.)*)[/lang]µU";
Je ne m'y ferais jamais à toutes ces options!!!!
Un grand merci à toi
--
Aide informatique: http://help-info.forumactif.com
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net
bref, grosso modo il faudrait que je trouve par quoi remplacer [^[]* pour avoir un [^[/lang]]* (qui ne marche pas) $pattern = "µ[lang=([a-z]+)](.*)[/lang]µU";
mis à part qu'il faut aussi autoriser le n, ça fonctionne parfaitement. regexp finale: $pattern = "µ[lang=([a-z]+)]((n|.)*)[/lang]µU";
Je ne m'y ferais jamais à toutes ces options!!!!
Un grand merci à toi -- Aide informatique: http://help-info.forumactif.com Humour: http://www.chatfou.com Tchattez en liberté: http://www.crazy-irc.net
Olivier Miakinen
$pattern = "µ[lang=([a-z]+)](.*)[/lang]µU";
mis à part qu'il faut aussi autoriser le n, ça fonctionne parfaitement. regexp finale: $pattern = "µ[lang=([a-z]+)]((n|.)*)[/lang]µU";
<http://fr2.php.net/manual/fr/reference.pcre.pattern.modifiers.php> U (PCRE_UNGREEDY) s (PCRE_DOTALL) </>
Au passage, le caractère « µ » ne me semble pas très lisible tant il ressemble aux autres lettres minuscules. Si vraiment tu veux utiliser un caractère de la partie haute de ISO-8859-1, voici quelques propositions.
<http://fr2.php.net/manual/fr/reference.pcre.pattern.modifiers.php>
U (PCRE_UNGREEDY)
s (PCRE_DOTALL)
</>
Au passage, le caractère « µ » ne me semble pas très lisible tant il
ressemble aux autres lettres minuscules. Si vraiment tu veux utiliser un
caractère de la partie haute de ISO-8859-1, voici quelques propositions.
<http://fr2.php.net/manual/fr/reference.pcre.pattern.modifiers.php> U (PCRE_UNGREEDY) s (PCRE_DOTALL) </>
Au passage, le caractère « µ » ne me semble pas très lisible tant il ressemble aux autres lettres minuscules. Si vraiment tu veux utiliser un caractère de la partie haute de ISO-8859-1, voici quelques propositions.
Ma préférence va au caractère « ¦ » qui est différent de « | » mais tout aussi lisible à mon humble avis.
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
CrazyCat
Olivier Miakinen wrote:
mis à part qu'il faut aussi autoriser le n, ça fonctionne parfaitement. regexp finale: $pattern = "µ[lang=([a-z]+)]((n|.)*)[/lang]µU"; $pattern = "µ[lang=([a-z]+)](.*)[/lang]µUs";
Well done, je ne pense jamais assez à regarder les options en détail
Au passage, le caractère « µ » ne me semble pas très lisible tant il ressemble aux autres lettres minuscules. Si vraiment tu veux utiliser un caractère de la partie haute de ISO-8859-1, voici quelques propositions.
Effectivement, j'ai utilisé arbitrairement ce caractère mais en temps normal j'utilise plutôt ! ou #
-- Aide informatique: http://help-info.forumactif.com Humour: http://www.chatfou.com Tchattez en liberté: http://www.crazy-irc.net
Olivier Miakinen wrote:
mis à part qu'il faut aussi autoriser le n, ça fonctionne parfaitement.
regexp finale: $pattern = "µ[lang=([a-z]+)]((n|.)*)[/lang]µU";
$pattern = "µ[lang=([a-z]+)](.*)[/lang]µUs";
Well done, je ne pense jamais assez à regarder les options en détail
Au passage, le caractère « µ » ne me semble pas très lisible tant il
ressemble aux autres lettres minuscules. Si vraiment tu veux utiliser un
caractère de la partie haute de ISO-8859-1, voici quelques propositions.
Effectivement, j'ai utilisé arbitrairement ce caractère mais en temps
normal j'utilise plutôt ! ou #
--
Aide informatique: http://help-info.forumactif.com
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net
mis à part qu'il faut aussi autoriser le n, ça fonctionne parfaitement. regexp finale: $pattern = "µ[lang=([a-z]+)]((n|.)*)[/lang]µU"; $pattern = "µ[lang=([a-z]+)](.*)[/lang]µUs";
Well done, je ne pense jamais assez à regarder les options en détail
Au passage, le caractère « µ » ne me semble pas très lisible tant il ressemble aux autres lettres minuscules. Si vraiment tu veux utiliser un caractère de la partie haute de ISO-8859-1, voici quelques propositions.
Effectivement, j'ai utilisé arbitrairement ce caractère mais en temps normal j'utilise plutôt ! ou #
-- Aide informatique: http://help-info.forumactif.com Humour: http://www.chatfou.com Tchattez en liberté: http://www.crazy-irc.net