Bonjour à tous,
Je cherche à traiter un fichier structuré ainsi :
Toutes les lignes commencent soit par une lettre, soit par un _A blabfdsdflabla... cvsfsgtgtfgf fdsfdsfd € 452 gdsfgf € 123
_ blafdsfsdfblabla... cvsfsgttgfgf fdsfdsfd gdsfgf £ 123
B blablasfsffsdfbla... cvsfgtrgtrhfgf $ 45 fdgtgdsfd $ 335 gdsfgf $ 123
_ blabfsdffsdsfsfdlabla... cvsfsfhfgf rererzerzerzdsfdsfd € 44 gdsfgf € 123
_ blabfsdffsdsfsfdlabla... cvsfsfhfgf rererzerzerzdsfdsfd € 44 gdsfgf € 123
A blablabfsfsdla... cvsfsfgtrsdhfgf $ 654 fdsfdsfd gdsfgf $ 123
_ blablabfdsfsdla... cfdsdgvsfsfhfgf € 100 fdsfdsfd gdsfgf € 123
A blablafsdfsbla... cvsffdgdfggsfhfgf £ 44 fdsfdgfdgdffsfssfsf fsdfd gdsfgf £ 123
Dans le cas où les lignes ne commencent pas par _, je veux coloriser tous les prix qui se trouvent sur la ligne. Les prix sont systématiquement précédés de $ £ ou € suivi et précédé d'un blanc
Pour les lignes qui commencent par un _, je ne veux rien faire du tout car ces items sont épuisés
J'ai écrit ceci en php :
Cela ne fonctionne pas trop mal, cela ne touche pas aux lignes avec des _.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function maj_prix($capture) { if ($capture[1] != "_") $maj = "<span class='prix'>".$capture[4]."</span>"; else $maj = $capture[4]; $txt = $capture[1].$capture[2].$capture[3].$maj; return $txt; } $texte = preg_replace_callback('#^(.)(.*?)( [$£] )([0-9,]+)#m', "maj_prix", $texte);
Le seul problème c'est que cela ne transforme que le premier prix de la ligne dans le cas où je mets le non-gourmant (.*?)
A blabfdsdflabla... cvsfsgtgtfgf fdsfdsfd € <span class='prix'>452</span> gdsfgf € 123
_ blafdsfsdfblabla... cvsfsgttgfgf fdsfdsfd gdsfgf £ 123
B blablasfsffsdfbla... cvsfgtrgtrhfgf $ <span class='prix'>45</span> fdgtgdsfd $ 335 gdsfgf $ 123
_ blabfsdffsdsfsfdlabla... cvsfsfhfgf rererzerzerzdsfdsfd € 44 gdsfgf € 123
_ blabfsdffsdsfsfdlabla... cvsfsfhfgf rererzerzerzdsfdsfd € 44 gdsfgf € 123
A blablabfsfsdla... cvsfsfgtrsdhfgf $ <span class='prix'>654</span> fdsfdsfd gdsfgf $ 123
_ blablabfdsfsdla... cfdsdgvsfsfhfgf € 100 fdsfdsfd gdsfgf € 123
A blablafsdfsbla... cvsffdgdfggsfhfgf £ <span class='prix'>44</span> fdsfdgfdgdffsfssfsf fsdfd gdsfgf £ 123
Et en remplaçant le non-gourmand (.*?) par un gourmand (.+), cela ne remplace que la dernière occurence, donc ce n'est pas suffisant non plus :
Je dois passer à côté de quelque chose mais je ne parviens pas à colorer tous les prix de mes lignes (ne commençant pas par _) mais uniquement soit le premier, soit le dernier.A blabfdsdflabla... cvsfsgtgtfgf fdsfdsfd € 452 gdsfgf € <span class='prix'>123</span>
_ blafdsfsdfblabla... cvsfsgttgfgf fdsfdsfd gdsfgf £ 123
B blablasfsffsdfbla... cvsfgtrgtrhfgf $ 45 fdgtgdsfd $ 335 gdsfgf $ <span class='prix'>123</span>
_ blabfsdffsdsfsfdlabla... cvsfsfhfgf rererzerzerzdsfdsfd € 44 gdsfgf € 123
_ blabfsdffsdsfsfdlabla... cvsfsfhfgf rererzerzerzdsfdsfd € 44 gdsfgf € 123
A blablabfsfsdla... cvsfsfgtrsdhfgf $ 654 fdsfdsfd gdsfgf $ <span class='prix'>123</span>
_ blablabfdsfsdla... cfdsdgvsfsfhfgf € 100 fdsfdsfd gdsfgf € 123
A blablafsdfsbla... cvsffdgdfggsfhfgf £ 44 fdsfdgfdgdffsfssfsf fsdfd gdsfgf £ <span class='prix'>123</span>
Pouvez-vous m'aider à colorer tous mes prix des lignes ne commençant pas par _ si possible sans faire de boucle ?
Merci d'avance.
Partager