Pour le calcul d'une url, je désire filtrer les petits mots de mon
choix dans une chaine :
- placés en début de chaine et suivis d'un tiret,
- placés en fin de chaine et précédés d'un tiret,
- placés dans la chaine et entourés d'un tiret.
Le 13/05/2013 17:37, Pierre Maurette m'a répondu :
Par ailleurs, bien que le résultat soit le même entre les deux scripts, je ne suis pas sûr qu'il soit celui souhaité par Stéphane lorsque deux petits mots se suivent à l'intérieur d'une chaîne : "le-village-au-fond-de-la-vallee" -> "village-fond-la-vallee" et pas "village-fond-vallee"
Pour ce cas, il me semble qu'une rustine serait d'appliquer le preg_replace() plusieurs fois. Tant que "ça matche".
Oui. Une méthode plus directe, mais plus difficile à lire pour qui maîtrise mal les regexp, serait d'utiliser les assertions.
Le 13/05/2013 17:37, Pierre Maurette m'a répondu :
Par ailleurs, bien que le résultat soit le même entre les deux scripts,
je ne suis pas sûr qu'il soit celui souhaité par Stéphane lorsque deux
petits mots se suivent à l'intérieur d'une chaîne :
"le-village-au-fond-de-la-vallee"
-> "village-fond-la-vallee" et pas "village-fond-vallee"
Pour ce cas, il me semble qu'une rustine serait d'appliquer le
preg_replace() plusieurs fois. Tant que "ça matche".
Oui. Une méthode plus directe, mais plus difficile à lire pour qui
maîtrise mal les regexp, serait d'utiliser les assertions.
Le 13/05/2013 17:37, Pierre Maurette m'a répondu :
Par ailleurs, bien que le résultat soit le même entre les deux scripts, je ne suis pas sûr qu'il soit celui souhaité par Stéphane lorsque deux petits mots se suivent à l'intérieur d'une chaîne : "le-village-au-fond-de-la-vallee" -> "village-fond-la-vallee" et pas "village-fond-vallee"
Pour ce cas, il me semble qu'une rustine serait d'appliquer le preg_replace() plusieurs fois. Tant que "ça matche".
Oui. Une méthode plus directe, mais plus difficile à lire pour qui maîtrise mal les regexp, serait d'utiliser les assertions.
Pierre Maurette
Olivier Miakinen :
Le 13/05/2013 17:37, Pierre Maurette m'a répondu :
Par ailleurs, bien que le résultat soit le même entre les deux scripts, je ne suis pas sûr qu'il soit celui souhaité par Stéphane lorsque deux petits mots se suivent à l'intérieur d'une chaîne : "le-village-au-fond-de-la-vallee" -> "village-fond-la-vallee" et pas "village-fond-vallee"
Pour ce cas, il me semble qu'une rustine serait d'appliquer le preg_replace() plusieurs fois. Tant que "ça matche".
Oui. Une méthode plus directe, mais plus difficile à lire pour qui maîtrise mal les regexp, serait d'utiliser les assertions.
La rustine que je proposais - même pas vraiment d'ailleurs - est en fait assez poreuse, et même toute pourrite. Elle débouche sur du non maintenable puisque basée sur le fait que '-blah-' est remplacé par '-' et rien d'autre. Il ne semble pas aberrant de décider un jour de remplacer par '', '_', '.', etc. Il vaut mieux faire du propre tout de suite que plus tard dans l'urgence.
-- Pierre Maurette
Olivier Miakinen :
Le 13/05/2013 17:37, Pierre Maurette m'a répondu :
Par ailleurs, bien que le résultat soit le même entre les deux scripts,
je ne suis pas sûr qu'il soit celui souhaité par Stéphane lorsque deux
petits mots se suivent à l'intérieur d'une chaîne :
"le-village-au-fond-de-la-vallee"
-> "village-fond-la-vallee" et pas "village-fond-vallee"
Pour ce cas, il me semble qu'une rustine serait d'appliquer le
preg_replace() plusieurs fois. Tant que "ça matche".
Oui. Une méthode plus directe, mais plus difficile à lire pour qui
maîtrise mal les regexp, serait d'utiliser les assertions.
La rustine que je proposais - même pas vraiment d'ailleurs - est en
fait assez poreuse, et même toute pourrite. Elle débouche sur du non
maintenable puisque basée sur le fait que '-blah-' est remplacé par '-'
et rien d'autre. Il ne semble pas aberrant de décider un jour de
remplacer par '', '_', '.', etc. Il vaut mieux faire du propre tout de
suite que plus tard dans l'urgence.
Le 13/05/2013 17:37, Pierre Maurette m'a répondu :
Par ailleurs, bien que le résultat soit le même entre les deux scripts, je ne suis pas sûr qu'il soit celui souhaité par Stéphane lorsque deux petits mots se suivent à l'intérieur d'une chaîne : "le-village-au-fond-de-la-vallee" -> "village-fond-la-vallee" et pas "village-fond-vallee"
Pour ce cas, il me semble qu'une rustine serait d'appliquer le preg_replace() plusieurs fois. Tant que "ça matche".
Oui. Une méthode plus directe, mais plus difficile à lire pour qui maîtrise mal les regexp, serait d'utiliser les assertions.
La rustine que je proposais - même pas vraiment d'ailleurs - est en fait assez poreuse, et même toute pourrite. Elle débouche sur du non maintenable puisque basée sur le fait que '-blah-' est remplacé par '-' et rien d'autre. Il ne semble pas aberrant de décider un jour de remplacer par '', '_', '.', etc. Il vaut mieux faire du propre tout de suite que plus tard dans l'urgence.
-- Pierre Maurette
Olivier Miakinen
Le 13/05/2013 19:40, Pierre Maurette m'a répondu :
Oui. Une méthode plus directe, mais plus difficile à lire pour qui maîtrise mal les regexp, serait d'utiliser les assertions.
[...] Il vaut mieux faire du propre tout de suite que plus tard dans l'urgence.