J'ai un fichier qui contient des chaines de caratères.
Je cherche une syntaxe épurée pour faire le traitement suivant :
-Toto (Pouetpouet) et sa moman Tata (Prout)-
Devient
-Toto et sa moman Tata -
En gros enlever les parenthèses et ce qu'elles contiennent. J'ai des
pistes avec PCRE mais leur documentation
(http://fr.php.net/manual/en/reference.pcre.pattern.syntax.php) m'est
assez hermétique.
( une parenthèse ouvrante... [^)]* ... suivis d'autant de caractères que possible différents d'une parenthèse fermante... ) ... puis une parenthèse fermante s* ... éventuellement suivies d'une série d'espaces (ou équivalents)
( une parenthèse ouvrante... .*? ... tous les caractères jusqu'à être bloqué par l'élément suivant... ) ... une parenthèse fermante s* ... éventuellement suivies d'une série d'espaces (ou équivalents)
BZP wrote:
Bonjour,
J'ai un fichier qui contient des chaines de caratères.
Je cherche une syntaxe épurée pour faire le traitement suivant :
-Toto (Pouetpouet) et sa moman Tata (Prout)-
Devient
-Toto et sa moman Tata -
si tu pars du principe que tu n'as pas de parenthèse dans tes
parenthèses, tu peux utiliser ceci :
( une parenthèse ouvrante...
[^)]* ... suivis d'autant de caractères que possible différents
d'une parenthèse fermante...
) ... puis une parenthèse fermante
s* ... éventuellement suivies d'une série d'espaces
(ou équivalents)
( une parenthèse ouvrante...
.*? ... tous les caractères jusqu'à être bloqué
par l'élément suivant...
) ... une parenthèse fermante
s* ... éventuellement suivies d'une série d'espaces
(ou équivalents)
( une parenthèse ouvrante... [^)]* ... suivis d'autant de caractères que possible différents d'une parenthèse fermante... ) ... puis une parenthèse fermante s* ... éventuellement suivies d'une série d'espaces (ou équivalents)
( une parenthèse ouvrante... .*? ... tous les caractères jusqu'à être bloqué par l'élément suivant... ) ... une parenthèse fermante s* ... éventuellement suivies d'une série d'espaces (ou équivalents)
Redy
Bonjour,
J'ai un fichier qui contient des chaines de caratères. Je cherche une syntaxe épurée pour faire le traitement suivant :
-Toto (Pouetpouet) et sa moman Tata (Prout)- Devient -Toto et sa moman Tata -
En gros enlever les parenthèses et ce qu'elles contiennent. J'ai des pistes avec PCRE mais leur documentation (http://fr.php.net/manual/en/reference.pcre.pattern.syntax.php) m'est assez hermétique.
J'ai un fichier qui contient des chaines de caratères.
Je cherche une syntaxe épurée pour faire le traitement suivant :
-Toto (Pouetpouet) et sa moman Tata (Prout)-
Devient
-Toto et sa moman Tata -
En gros enlever les parenthèses et ce qu'elles contiennent. J'ai des
pistes avec PCRE mais leur documentation
(http://fr.php.net/manual/en/reference.pcre.pattern.syntax.php) m'est
assez hermétique.
J'ai un fichier qui contient des chaines de caratères. Je cherche une syntaxe épurée pour faire le traitement suivant :
-Toto (Pouetpouet) et sa moman Tata (Prout)- Devient -Toto et sa moman Tata -
En gros enlever les parenthèses et ce qu'elles contiennent. J'ai des pistes avec PCRE mais leur documentation (http://fr.php.net/manual/en/reference.pcre.pattern.syntax.php) m'est assez hermétique.
J'ai un fichier qui contient des chaines de caratères. Je cherche une syntaxe épurée pour faire le traitement suivant :
-Toto (Pouetpouet) et sa moman Tata (Prout)- Devient -Toto et sa moman Tata -
En gros enlever les parenthèses et ce qu'elles contiennent. J'ai des pistes avec PCRE mais leur documentation (http://fr.php.net/manual/en/reference.pcre.pattern.syntax.php) m'est assez hermétique.
Merci de votre aide.
Bonjour
Mes deux cents...
Vous voulez remplacer tout pattern "([^)]+)" par rien ( "" )
Ce pattern signifie: tout ce qui suit une parenthèse ouvrante ( incluse dans le pattern ) ( ( antislashé je crois pour une expression régulière ), qui soit différent d'un parenthèse fermante ( antislashée ), suivi d'un parenthèse fermante ( idem ). Dans ce cas, le + signifie " au moins un caractère ". S'il est possible qu'il n'y ait aucun caractère ( les parenthèses peuvent se toucher ), il faut remplacer le + par une astérisque *
// Logique, non ? $chaine = "-Toto (Pouetpouet) et sa moman Tata (Prout)-";
// Dans le cas où les parenthèses // ouvrantes et fermantes, // doivent nécéssairement être séparées // par quelque chose: $chaine2 = str_replace("([^)]+)", "", $chaine);
// Dans le cas où les parenthèses // ouvrantes et fermantes, // oeuvent se toucher: $chaine2 = str_replace("([^)]*)", "", $chaine);
Théoriquement $chaine2 contient ce que vous voulez... à condition que les parenthèses soient "nestées" ( correctement formattées ).
Bien à vous.
Jean Francois Ortolo
-- Mon site donne des Statistiques et des Historiques Graphiques gratuits sur les Courses de Chevaux du PMU. http://www.ortolojf-courses.com
bzp wrote:
Bonjour,
J'ai un fichier qui contient des chaines de caratères.
Je cherche une syntaxe épurée pour faire le traitement suivant :
-Toto (Pouetpouet) et sa moman Tata (Prout)-
Devient
-Toto et sa moman Tata -
En gros enlever les parenthèses et ce qu'elles contiennent. J'ai des
pistes avec PCRE mais leur documentation
(http://fr.php.net/manual/en/reference.pcre.pattern.syntax.php) m'est
assez hermétique.
Merci de votre aide.
Bonjour
Mes deux cents...
Vous voulez remplacer tout pattern "([^)]+)" par rien ( "" )
Ce pattern signifie: tout ce qui suit une parenthèse ouvrante (
incluse dans le pattern ) ( ( antislashé je crois pour une expression
régulière ), qui soit différent d'un parenthèse fermante ( antislashée
), suivi d'un parenthèse fermante ( idem ). Dans ce cas, le + signifie "
au moins un caractère ". S'il est possible qu'il n'y ait aucun caractère
( les parenthèses peuvent se toucher ), il faut remplacer le + par une
astérisque *
// Logique, non ?
$chaine = "-Toto (Pouetpouet) et sa moman Tata (Prout)-";
// Dans le cas où les parenthèses
// ouvrantes et fermantes,
// doivent nécéssairement être séparées
// par quelque chose:
$chaine2 = str_replace("([^)]+)", "", $chaine);
// Dans le cas où les parenthèses
// ouvrantes et fermantes,
// oeuvent se toucher:
$chaine2 = str_replace("([^)]*)", "", $chaine);
Théoriquement $chaine2 contient ce que vous voulez... à condition que
les parenthèses soient "nestées" ( correctement formattées ).
Bien à vous.
Jean Francois Ortolo
--
Mon site donne des Statistiques
et des Historiques Graphiques gratuits
sur les Courses de Chevaux du PMU.
http://www.ortolojf-courses.com
J'ai un fichier qui contient des chaines de caratères. Je cherche une syntaxe épurée pour faire le traitement suivant :
-Toto (Pouetpouet) et sa moman Tata (Prout)- Devient -Toto et sa moman Tata -
En gros enlever les parenthèses et ce qu'elles contiennent. J'ai des pistes avec PCRE mais leur documentation (http://fr.php.net/manual/en/reference.pcre.pattern.syntax.php) m'est assez hermétique.
Merci de votre aide.
Bonjour
Mes deux cents...
Vous voulez remplacer tout pattern "([^)]+)" par rien ( "" )
Ce pattern signifie: tout ce qui suit une parenthèse ouvrante ( incluse dans le pattern ) ( ( antislashé je crois pour une expression régulière ), qui soit différent d'un parenthèse fermante ( antislashée ), suivi d'un parenthèse fermante ( idem ). Dans ce cas, le + signifie " au moins un caractère ". S'il est possible qu'il n'y ait aucun caractère ( les parenthèses peuvent se toucher ), il faut remplacer le + par une astérisque *
// Logique, non ? $chaine = "-Toto (Pouetpouet) et sa moman Tata (Prout)-";
// Dans le cas où les parenthèses // ouvrantes et fermantes, // doivent nécéssairement être séparées // par quelque chose: $chaine2 = str_replace("([^)]+)", "", $chaine);
// Dans le cas où les parenthèses // ouvrantes et fermantes, // oeuvent se toucher: $chaine2 = str_replace("([^)]*)", "", $chaine);
Théoriquement $chaine2 contient ce que vous voulez... à condition que les parenthèses soient "nestées" ( correctement formattées ).
Bien à vous.
Jean Francois Ortolo
-- Mon site donne des Statistiques et des Historiques Graphiques gratuits sur les Courses de Chevaux du PMU. http://www.ortolojf-courses.com
Marc Quinton
BZP wrote:
-Toto (Pouetpouet) et sa moman Tata (Prout)- Devient -Toto et sa moman Tata -
la fonction est preg_replace(), et l'expression reguliere est tres certainement :
/(.+?)/
* si tu veux supprimer des parentheses vides, il faut remplacer + par *, * le ? veut dire expression non gourmande. * attention, non testé.
BZP wrote:
-Toto (Pouetpouet) et sa moman Tata (Prout)-
Devient
-Toto et sa moman Tata -
la fonction est preg_replace(), et l'expression reguliere
est tres certainement :
/(.+?)/
* si tu veux supprimer des parentheses vides, il faut remplacer + par *,
* le ? veut dire expression non gourmande.
* attention, non testé.
pourquoi tu fait pas avec des for?? c'est plus simple :)
for ($i=0;$i<length($str; $i++) { if ($str{$i}=="(") { $j = $i; while (!($str{$j}==")") { $j++; } } }
avec ca, tu rajout deux verif : -si $j > count ($str) on bloque, et si a ce moment $str{$j}<>")", c raté... :)
non?
Jean-Francois Ortolo
Jean-Francois Ortolo wrote:
bzp wrote:
Bonjour,
J'ai un fichier qui contient des chaines de caratères. Je cherche une syntaxe épurée pour faire le traitement suivant :
-Toto (Pouetpouet) et sa moman Tata (Prout)- Devient -Toto et sa moman Tata -
En gros enlever les parenthèses et ce qu'elles contiennent. J'ai des pistes avec PCRE mais leur documentation (http://fr.php.net/manual/en/reference.pcre.pattern.syntax.php) m'est assez hermétique.
Merci de votre aide.
Bonjour
Mes deux cents...
Vous voulez remplacer tout pattern "([^)]+)" par rien ( "" )
Je modifie, pour qu'il reste un espace entre les tokens séparés par le token à supprimer.
Donc, le pattern devient: "[ ]*([^)]+)[ ]*"
Et, il faut le remplacer par un espace.
Donc, celà devient:
$pattern = "[ ]*([^)]+)[ ]*"; // Au moins un caractère // entre les parenthèses ou bien: $pattern = "[ ]*([^)]*)[ ]*"; // Pas de condition
Et ensuite: $chaine2 = str_replace($pattern, " ", $chaine);
Il est nécéssaire, s'il on veut rester simple, de supposer qu'il y a au moins une parenthèse ouvrante, ou ( resp ) fermante, pour chaque token à supprimer, qui soit précédée ou ( resp ) suivie d'un ou plusieurs espaces. C'est théoriquement toujours le cas pour le type des tokens indiqués.
Aussi simple que ça...
Bien à vous.
Jean Francois Ortolo
-- Mon site donne des Statistiques et des Historiques Graphiques gratuits sur les Courses de Chevaux du PMU. http://www.ortolojf-courses.com
Jean-Francois Ortolo wrote:
bzp wrote:
Bonjour,
J'ai un fichier qui contient des chaines de caratères.
Je cherche une syntaxe épurée pour faire le traitement suivant :
-Toto (Pouetpouet) et sa moman Tata (Prout)-
Devient
-Toto et sa moman Tata -
En gros enlever les parenthèses et ce qu'elles contiennent. J'ai des
pistes avec PCRE mais leur documentation
(http://fr.php.net/manual/en/reference.pcre.pattern.syntax.php) m'est
assez hermétique.
Merci de votre aide.
Bonjour
Mes deux cents...
Vous voulez remplacer tout pattern "([^)]+)" par rien ( "" )
Je modifie,
pour qu'il reste un espace entre les tokens séparés par le token à
supprimer.
Donc, le pattern devient: "[ ]*([^)]+)[ ]*"
Et, il faut le remplacer par un espace.
Donc, celà devient:
$pattern = "[ ]*([^)]+)[ ]*"; // Au moins un caractère
// entre les parenthèses
ou bien:
$pattern = "[ ]*([^)]*)[ ]*"; // Pas de condition
Et ensuite:
$chaine2 = str_replace($pattern, " ", $chaine);
Il est nécéssaire, s'il on veut rester simple, de supposer qu'il y a
au moins une parenthèse ouvrante, ou ( resp ) fermante, pour chaque
token à supprimer, qui soit précédée ou ( resp ) suivie d'un ou
plusieurs espaces. C'est théoriquement toujours le cas pour le type des
tokens indiqués.
Aussi simple que ça...
Bien à vous.
Jean Francois Ortolo
--
Mon site donne des Statistiques
et des Historiques Graphiques gratuits
sur les Courses de Chevaux du PMU.
http://www.ortolojf-courses.com
J'ai un fichier qui contient des chaines de caratères. Je cherche une syntaxe épurée pour faire le traitement suivant :
-Toto (Pouetpouet) et sa moman Tata (Prout)- Devient -Toto et sa moman Tata -
En gros enlever les parenthèses et ce qu'elles contiennent. J'ai des pistes avec PCRE mais leur documentation (http://fr.php.net/manual/en/reference.pcre.pattern.syntax.php) m'est assez hermétique.
Merci de votre aide.
Bonjour
Mes deux cents...
Vous voulez remplacer tout pattern "([^)]+)" par rien ( "" )
Je modifie, pour qu'il reste un espace entre les tokens séparés par le token à supprimer.
Donc, le pattern devient: "[ ]*([^)]+)[ ]*"
Et, il faut le remplacer par un espace.
Donc, celà devient:
$pattern = "[ ]*([^)]+)[ ]*"; // Au moins un caractère // entre les parenthèses ou bien: $pattern = "[ ]*([^)]*)[ ]*"; // Pas de condition
Et ensuite: $chaine2 = str_replace($pattern, " ", $chaine);
Il est nécéssaire, s'il on veut rester simple, de supposer qu'il y a au moins une parenthèse ouvrante, ou ( resp ) fermante, pour chaque token à supprimer, qui soit précédée ou ( resp ) suivie d'un ou plusieurs espaces. C'est théoriquement toujours le cas pour le type des tokens indiqués.
Aussi simple que ça...
Bien à vous.
Jean Francois Ortolo
-- Mon site donne des Statistiques et des Historiques Graphiques gratuits sur les Courses de Chevaux du PMU. http://www.ortolojf-courses.com