Remplacement de charretières avec recherche position

oxedgar Messages postés 5 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 30 avril 2017 - Modifié le 29 avril 2017 à 09:33
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 - 30 avril 2017 à 20:40
Bonjour,

je suis a la recherche d'une méthode php permettant de manipuler une chaîne de caractères comme suit:
[Art3_Type] => FR: Carton
DE: Karton
[Art3_Contenant] => FR: Carton
DE: Karton
[Art3_Capacite] => Capacité / Kapazität
- 

Dimensions / Maße 
- [Art3_Quantite] => 6 [Art3_Com] => - [Art4_Type] => FR: Sacs 110l
DE: Säcke 110L
[Art4_Contenant] => FR: Sacs 110l
DE: Säcke 110l
[Art4_Capacite] => Capacité / Kapazität
110l 

Dimensions / Maße 
- [Art4_Quantite] => 7 [Art4_Com] => - ghjgfj [Art5_Type] => FR: Sacsl
DE: PET SäckeL
[Art5_Contenant] => FR: Sacsl
DE: SäckeL
[Art5_Capacite] => Capacité / Kapazität
360l 

Dimensions / Maße 
- [Art5_Quantite] => 0 [Art5_Com] => - [Art6_Type] => FR: Support
DE: halter
[Art6_Contenant] => FR: Support
DE: halter
[Art6_Capacite] => Capacité / Kapazität
- 

Dimensions / Maße 
- [Art6_Quantite] => 0 [Art6_Com] => - [Art7_Type] => FR: Bac
DE: PET Behälter
[Art7_Contenant] => FR: Bac
DE: PET Behälter
[Art7_Capacite] => Capacité / Kapazität
- 

Dimensions / Maße 
- [Art7_Quantite] => 0 [Art7_Com] => - 


Je cherche a supprimer les lignes suivantes si [Art_Quantite] => 0:
[Art7_Type] => FR: Bac
DE: PET Behälter
[Art7_Contenant] => FR: Bac
DE: PET Behälter
[Art7_Capacite] => Capacité / Kapazität
- 

Dimensions / Maße 
- [Art7_Quantite] => 0 [Art7_Com] => - 


Mon problème est que la longueur des caractères peut varier...
Etant débutant en prog, je veux bien de vos lumières. si quelqu’un peux m'aider?

3 réponses

Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
29 avril 2017 à 21:29
Bonsoir

voici la syntaxe de la regex de recherche (tester pour C#...)

\[Art(\d+)_.*- \[Art(\1)_Quantite] => 0 \[Art\1_Com] => - 

En Français ça veut dire
  • "[Art"
  • suivi de 1 ou plusieurs chiffres (que l'on met dans la capture 1)
  • suivi de "_"
  • suivi de n'importe quel caractères, un nombre indéterminé de fois
  • suivi de [Art
  • suivi de la valeur de la capture 1
  • suivi de "_Quantite] => 0 [Art"
  • suivi de la valeur de la capture 1
  • suivi de _Com] => -


Il faut mettre l'option SingleLine, ça fait comme il n'y avait pas de saut de ligne.

Tu peux voir le résultat ici.

Il faut faire défiler le texte de Input vers le bas pour voir les captures surlignées, tu peux aussi regarder le résultat par capture dans l'onglet table.


Maintenant, je ne sais pas comment ça s’implémente en PHP, ni comment marche le Replace.
A toi de chercher.

1
oxedgar Messages postés 5 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 30 avril 2017
Modifié le 30 avril 2017 à 20:52
Merci Whismeril. Je ne connais pas cet outil mais je suis bluffé par son fonctionement! En effet il me donne le résultat escompté si je coche la case remplacer... Mais je ne trouve pas le code de la fonction qu'il utilise! Savez-vous où ou comment la trouver?

http://regexstorm.net/...

J'ai aussi trouvé cet outil orienté php mais ton filtre ne semble pas fonctionner :
https://regex101.com/r/oZnith/1

Merci pour ton aide
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
29 avril 2017 à 12:18
Bonjour

Je ne fait pas de php, mais il existe un outils de recherche / remplacement "universel" : les expressions régulières (regex).

Là tout de suite, je ne peux pas t'aider pour la syntaxe, mais ça te laisse le temps de te renseigner sur cet outil.
Il existe des sites où tu peux tester tes regex, cherches en un pour php, l'implementation pouvant varier selon le langage.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
30 avril 2017 à 20:40
Comme je te l'ai dit je ne fais pas de PHP.
Si je te montres comment s'implémente un Replace en C#, ça ne va pas t'aider beaucoup plus.

Il y a des tutos sur le net, j'en ai trouvé plusieurs
http://g-rossolini.developpez.com/tutoriels/php/regex/
http://www.rexegg.com/regex-php.html
http://www.phpf1.com/tutorial/php-regular-expression.html

0
Rejoignez-nous