hello à tous, le gros de mon problème de ce matin étant résolu, il me reste une question...
Comment tester en PCRE "est un guillemet précéder d'un anti-slash ou n'est pas un guillement" ?
L'expression: " ((?:(?<=\\)")|[^"])* " ne marche pas :(
hello à tous, le gros de mon problème de ce matin étant résolu, il me reste une question...
Comment tester en PCRE "est un guillemet précéder d'un anti-slash ou n'est pas un guillement" ?
L'expression: " ((?:(?<=\\)")|[^"])* " ne marche pas :(
Houaa ! c'est de l'art une question comme ça !
Bon, si j'ai bien compris, tu veux détecter un \" dans ta chain ?
Si c'est le cas, utilise : \\\"
Si tu veux détecter un guillement qui n'est PAS précédé d'un antislash, je verais bien un truc comme ça : ?\"
Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !
Pas tout à fait... j'aimerais capturer une chaîne délimitée par des guillemet... j'utilise pour ça: "([^"])*"Envoyé par gloubi
mais si j'ai une chaîne:
"voilà une chaîne... elle contient une \"citation\", mais cette citation ne dois pas arreter l'analyse!"
ben on va me sortire voilà une chaîne... elle contient une \
Problème interressant... 9a peut pas marcher avec un truc de ce style :
\"[.\\\".]*?\"
(si j'ai bonne mémoire, le point remplace n'importe quel caractere, ce dont apres reflexion je ne suis pas sur pour le ?)
Le principe étant de dire qu'on peut trouver autant de \" que l'on veut dans la chaine avant de trouver un " non précédé d'un \
Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !
Ya quand même un bug, si la chaîne est: "\"citation\"", ben ça ne marchera pasEnvoyé par gloubi
c'est juste ! Si j'avais le droit de faire le porc à ta place, je ferais dabord un str_replace() de \" par §, puis la meme chose dans l'autre sens apres mon traitement lol
Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !
Et si la chaine contient un § ??Envoyé par gloubi
J'aimerais pas pouvoir garder tout les caractères
Le § était juste là pour illustrer "l'esprit gros cochon"
Rien ne t'empèche de trouver une combinaison plus compliqué qui sera jamais utilisé, genre -=§¤=- ou un truc vraiment crados comme ça !
Y'a la méthode BBCode aussi, où les gars génèrent un UID : en réalité, a chaque texte est associé un UID généré aléatoirement via substr(md5(microtime()),0,10), et ils stockent ça en BDD comme ça :
[B:69762359de]texte en gras[/b:69762359de]
Appliqué à ton principe (en sauvegardant l'UID dans une variable le temps de faire ton traitement), ça réduirait à peu près à néant les chances d'erreur :
§69762359de§ pour un \" avec un str_replace()...
Enfin bon, c'est la méthode dite "du gros porc" (dont j'ai déjà assez abusé aujourd'hui)... Perso, je voit pas de soluce a ton probleme en preg...
En dehors des PREG, y'a les grammaires, les automates et les trucs comme ça...
Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !
Personne ne sais utiliser les assertions ?
J'ai pourtant l'impression que c'est ce qu'îl me faut
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager