Remplacement de charretières avec recherche position

oxedgar 5 Messages postés dimanche 27 mai 2007Date d'inscription 30 avril 2017 Dernière intervention - 29 avril 2017 à 09:32 - Dernière réponse : Whismeril 11082 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 février 2018 Dernière intervention
- 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?
Afficher la suite 

4 réponses

Répondre au sujet
Whismeril 11082 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 février 2018 Dernière intervention - 29 avril 2017 à 21:29
+1
Utile
1
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.

Cette réponse vous a-t-elle aidé ?  
oxedgar 5 Messages postés dimanche 27 mai 2007Date d'inscription 30 avril 2017 Dernière intervention - 30 avril 2017 à 20:30
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
Commenter la réponse de Whismeril
Whismeril 11082 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 février 2018 Dernière intervention - 29 avril 2017 à 12:18
0
Utile
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.
Commenter la réponse de Whismeril
Whismeril 11082 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 février 2018 Dernière intervention - 30 avril 2017 à 20:40
0
Utile
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

Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.