Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2011 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[php] Remplace tout les \n entre "" dans une chaine

n°1549801
anapajari
s/travail/glanding on hfr/gs;
Posté le 26-04-2007 à 14:34:43  profilanswer
 

Reprise du message précédent :

simoes a écrit :

6067;19.04.2007;20.04.2007;Workshop;Workshop;Lieu;Tous;320;;;;;NM;VD
7026;20.04.2007;20.04.2007;Colf Coaching ;"Golf Coaching Discover
14h00-18h00";Lieu;AP;190;;;;;AB;VD


Toutes les lignes "normales" se finissent pas VD? Ou par une liste de valeurs finie?

 
MagicBuzz a écrit :

Ca ça marche chez moi : (en cours de correction en fait, ça marche pas :D

Code :
  1. Option Explicit
  2. Dim str, str2, reg
  3. str = """titi"",""va"",""à"",""la" & vbCrLf & _
  4.      """,""piscine avec ces """"amis""""" & vbcrlf & _
  5.      """toto"",""va"",""à"",""la"",""plage"""
  6. msgbox(str)
  7. Set reg = new RegExp
  8. 'reg.Pattern = "[\^,""]""[^""]*([\r\n])[^""]*""[\$,""]"
  9. reg.pattern = "([\^,""]""[^""]*)\r\n([^""\r\n]*""[\$,""])"
  10. reg.Global = True
  11. str2 = reg.Replace(str, "$1<br/>$2" )
  12. msgbox(str2)



A vue de nez je dirais que le moteur de regex sur ton truc ça doit être POSIX et pas PCRE, du coup si (ça marche ;) et)  il eut s'en servir en php il faut utiliser ereg_* et pas preg_*

Message cité 2 fois
Message édité par anapajari le 26-04-2007 à 14:35:25
mood
Publicité
Posté le 26-04-2007 à 14:34:43  profilanswer
 

n°1549811
MagicBuzz
Posté le 26-04-2007 à 14:37:23  profilanswer
 

anapajari a écrit :

Toutes les lignes "normales" se finissent pas VD? Ou par une liste de valeurs finie?


 
ouais nan, là je te vois arriver, va te cacher :o

n°1549964
simoes
Posté le 26-04-2007 à 14:48:15  profilanswer
 

MagicBuzz a écrit :

ouais nan, là je te vois arriver, va te cacher :o


 
j'y ai déja pensé mais c'est un peut bourrain non?

n°1549976
Pablo Escr​obarbe
Retour d'exil
Posté le 26-04-2007 à 14:53:38  profilanswer
 

Bah si toutes tes lignes finissent par VD, la solution est bien plus simple.

n°1549978
anapajari
s/travail/glanding on hfr/gs;
Posté le 26-04-2007 à 14:54:31  profilanswer
 

c'est pas bourrin, il y en a pour 2 secondes et ça résoud tous les cas de figures ( via la 1ere regex que j'ai filé d'ailleurs, celle qui se basait sur le fait que les lignes se terminaient par un ; ).


Message édité par anapajari le 26-04-2007 à 14:54:51
n°1550016
MagicBuzz
Posté le 26-04-2007 à 15:10:16  profilanswer
 

ouais mais c'est plus générique, c'est le mal :o
 
parcequ'avec un truc généric, il se fait ensuite une petite libre "déboucheur de CSV bouché.inc" et hop ! il ne se pose plus jamais la question. alors que si on commence à écrire des règles basées sur des plans sur la comètes et du spécifique, va carrément falloir appeler "SOS fosse sceptique bouchée" à chaque fois :/

n°1550031
simoes
Posté le 26-04-2007 à 15:13:46  profilanswer
 

j'ai pas le contrôle des données sur la dernière colonne donc voila ca va pas...

n°1550047
MagicBuzz
Posté le 26-04-2007 à 15:18:51  profilanswer
 

sinon, là mon code, marche, mais le "global" il s'en bat les coucougnettes. pige pas pkoi :??:
du coup il ne remplace que la première ligne et basta :/

Message cité 1 fois
Message édité par MagicBuzz le 26-04-2007 à 15:19:07
n°1550052
anapajari
s/travail/glanding on hfr/gs;
Posté le 26-04-2007 à 15:23:08  profilanswer
 

Simoes: Toutes les lignes commencent par des chiffres suivis d'un ; ???

 
MagicBuzz a écrit :

sinon, là mon code, marche, mais le "global" il s'en bat les coucougnettes. pige pas pkoi :??:
du coup il ne remplace que la première ligne et basta :/


c'est pas comme si je t'avais pas expliqué pourquoi :o ...
Je l'a refait, admettons ta pattern est "A B" ou "B C" ou "C D"
et ta phrase c'est A B C D
L'application de ta regex va donné ça:

  • "A B" matché, je passe au reste
  • "C D" matché, j'ai fini.

le morceau "B C" n'est pas matché, car il fait partie de deux autres matchs [:spamafote]


Message édité par anapajari le 26-04-2007 à 15:23:43
n°1550054
MagicBuzz
Posté le 26-04-2007 à 15:25:13  profilanswer
 

anapajari a écrit :

Toutes les lignes "normales" se finissent pas VD? Ou par une liste de valeurs finie?
 
 
A vue de nez je dirais que le moteur de regex sur ton truc ça doit être POSIX et pas PCRE, du coup si (ça marche ;) et)  il eut s'en servir en php il faut utiliser ereg_* et pas preg_*


mood
Publicité
Posté le 26-04-2007 à 15:25:13  profilanswer
 

n°1550070
soju
One shot !
Posté le 26-04-2007 à 15:33:33  profilanswer
 

MagicBuzz a écrit :

([\^,""]""[^""]*)\r\n([^""\r\n]*""[\$,""])

ça marche ?
remarques :
- un seul " dans une classe de caractère, ça suffit
- pas de quantificateur pour 2 classes sur 4, c'est normal ?
 
EDIT: correction quotemsg


Message édité par soju le 26-04-2007 à 15:34:26
n°1550096
MagicBuzz
Posté le 26-04-2007 à 15:51:02  profilanswer
 

Code :
  1. Option Explicit
  2.  
  3. Dim str, reg
  4.  
  5. str = """titi1"",""va"",""à"",""la" & vbCrLf & """,""piscine""" & vbcrlf & _
  6.      """titi2"",""va"",""à"",""" & vbCrLf & "la"",""piscine""" & vbcrlf & _
  7.      """titi3"",""va"",""à"",""l" & vbCrLf & "a"",""piscine""" & vbcrlf & _
  8.      """titi3"",""va"",""à"",""l" & vbCrLf & vbCrLf & "a"",""piscine""" & vbcrlf & _
  9.      """" & vbCrLf & "titi4"",""va"",""à"",""la"",""piscine""" & vbcrlf & _
  10.      """titi5"",""va"",""à"",""la"",""piscine" & vbCrLf & """" & vbcrlf & _
  11.      """" & vbCrLf & "titi6"",""va"",""à"",""la"",""piscine avec ces """"amis""""""" & vbcrlf & _
  12.      """" & vbCrLf & "titi7"",""va"",""à"",""la"",""piscine avec ces """"amis""""""" & vbcrlf & _
  13.      "EOF"
  14. msgbox(str)
  15.  
  16. Set reg = new RegExp
  17.  
  18. reg.pattern = "([\r\n,""]""[^""]*)\r\n([^""]*""[\r\n,""])"
  19. reg.Global = true
  20.  
  21. do while (reg.test(str))
  22.     str = reg.Replace(str, "$1<br/>$2" )
  23. loop
  24.  
  25. msgbox(str)


=> Ca, ça fonctionne dans 99% des cas.
 
Je le fait merder que dans un seul cas : la dernière ligne, avec titi7
=> La ligne précédente se termine avec """ qui contient "". Hors, "" suivient de \n est considéré par la regexp comme un saut de ligne à échapper. Il faudrait donc modifier la regexp pour ne fait cet échappement que si la série de " est paire. :sleep:


Message édité par MagicBuzz le 26-04-2007 à 15:52:10
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Comparaison de Chaine de caractères, déplacement DOMRajouter des éléments à l’aide de chaine de caractère
[vbs] [SOLVED!!] Simple remplacement de chaine...[Win32]GetTextExtentPoint32 ne me donne pas la bonne largeur de chaîne
[c] liste simplement chainé==> pb [résolu==> merci]Faire un substring d'une chaine de caractères larges
Tester le format d'une chaine & expressions régulieres[Résolu] Remplacement d'une chaine par <BR/>
[JS] Exécuter une fonction à partir de son nom en variable chaîne[SQL] Remplacé une chaîne dans X champs
Plus de sujets relatifs à : [php] Remplace tout les \n entre "" dans une chaine


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)