|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Inscription : septembre 2004 Messages : 245 ![]() |
Bonjour,
Je suis complètement bloqué, j'arrive pas à voir comment faire. J'ai une chaîne de caractère dans un fichier : width="768" => mon but est de remplacer la valeur 768 par 500 En sachant que : 1)dans un premier temps je recherche si un width est présent,si oui je regarde sa valeur , ici 768 2)je teste si sa valeur est supérieur à 500 3)si valeur supérieur à 500, je la remplace par 500 => donc ici je remplace 768 par 500 et j'obtient width="500" Les recherches sur les chaînes de caractères c'est pas trop mon truc, je voit pas du tout comment faire.. Est-ce que quelq'un peut m'aiguiller ? Merci. José |
|
|
00
|
|
|
#2 | ||||||||
|
Membre habitué
![]() Inscription : septembre 2004 Messages : 245 ![]() |
J'ai à peu près réussi, ce que je voulais faire, mais il ne me remplace que la 1ere occurrence trouvée, comment faire pour que tout le fichier soit traité ?
Code :
Par défaut J'ai a peut près réussit, ce que je voulais faire, mais il ne me remplace que la 1ere occurrence trouvée, comment faire pour que tout le fichier soit traité ? Code :
Code X :
insert0.sql : Code X :
|
||||||||
|
|
00
|
|
|
#3 | ||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Je te conseille preg_replace_callback :
Code :
|
||
|
|
00
|
|
|
#4 | |||||
|
Membre habitué
![]() Inscription : septembre 2004 Messages : 245 ![]() |
Citation:
Merci pour ton aide J'ai essayé ton code mais cela ne marche pas : contenu de insert.sql <<< z bob=800 ffezfze fzefzef ffffbob=1000 fd dfz ef e fz efe f bob=1000 >>> Script éxécuté : Code :
<<< z bob=800 ffezfze fzefzef ffffbob=1000 fd dfz ef e fz efe f bob=1000 1 >>> Le fichier insert0.sql reste vide Je comprend pas ce que le fonctionnement et ce que fait la fonction plafond ? |
|||||
|
|
00
|
|
|
#5 | ||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Désolé, je me suis un peu emmêlé les pinceaux... en particulier, j'ai utilisé preg_replace au lieu de preg_replace_callback, et max au lieu de min.
Code :
A chaque remplacement, la fonction plafond reçoit un tableau de matches, dont l'élément d'indice 0 contient l'ensemble de la sous-chaîne reconnue par la regex (par exemple bob=1000) et l'élément d'indice 1 ce qui a été capturé par la première (et unique) paire de parenthèses de la regex (par exemple, 1000). (int) $ma[1] convertit ce nombre (qui arrive sous forme de texte) en entier. min() plafonne ce nombre à 100 ; c'est équivalent à Code :
if ((int) $ma[1] > 100) { $num = 100 ;} else { $num = (int) $ma[1] ;} |
||
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : septembre 2004 Messages : 245 ![]() |
Merci ça marche.
Merci aussi pour l'explixation. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com