|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 9 ![]() |
Bonjour , je reviens vers vous encore pour un probleme d'extraction de chaines (de remplacement plus exactement)
depuis ce matin je cherche a utiliser correctement les expressions regulieres et j'avoue que j'ai un peu de mal .... donc voilà mon probleme est le suivant : je veux afficher des miniatures sur mon site mobile. lorsque j'upload une image sur mon site, je créé une miniature de cette image automatiquement. admettons que l'image s'appelle image1.gif, la miniature s'appelera miniature_image1.gif ensuite dans mon site mobile je n'ai plus qu'a faire une recherche de image1.gif et de la remplacer par miniature_image1.gif ... voilà ... je ne parviens pas a faire ce remplacement. Les image se trouvent dans les repertoires /upload et /upload/* j'ai essayé un truc du genre : $Texte = ereg_replace("([^\s'\"]*\.gif)","miniature_\\1",$row[7]); mais ca ne fonctionne pas du tout quelqu'un saurait faire ca ? je vous remercie d'avance ;-) TmR |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 9 ![]() |
bon j'ai avancé un peu.
en relisant tous les posts sur les remplacements j'arrive a ce résultat : $Texte = ereg_replace("/upload\/(.*)\/(.*)(.jpg|gif|png)", "/upload/"."\\1"."/"."miniature_"."\\2"."\\3",$row[7]); ... mais ca ne fonctionne toujours pas exemple de chaines a transformer : Exemple 1 : "bla bla bla <img src='http://www.monsite.com/upload/image1.gif'> bla bla" qui devrait donner : "bla bla bla <img src='http://www.monsite.com/upload/miniature_image1.gif'> bla bla" qui exemple 2 : "bla bla bla <img src='http://www.monsite.com/upload/news/image2.gif'> bla bla" qui devrait donner : "bla bla bla <img src='http://www.monsite.com/upload/news/miniature_image2.gif'> bla bla" qui |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 9 ![]() |
alors (je continue a avancer) .. mais la ca va etre plus dur je pense
j'essaie ca : $Texte = preg_replace('#\/upload(.*)\/(.*)(.jpg|gif|png)#Usi', '/upload$1/$2miniature_$3', $row[7] ) ; mais au lieu d'avoir "http://www.monsite.com/upload/miniature_image1.gif" j'ai "http://www.monsite.com/upload/image1miniature_.gif" .... |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 9 ![]() |
bon voilà j'ai simplifié mon probleme
j'utilise cette ligne : $Texte = preg_replace('#\/upload(.*)\/(.*)(.jpg|gif|png)#Usi', '/upload/$1miniature_$2$3', $row[7] ) ; pour le remplacement des miniatures dans le repertoire /upload ca fonctionne. par contre pour le remplacement dans les sous repertoires d'upload (upload/news) ca ne fonctionne pas ... ca donne : http://www.monsite.com/upload/miniature_news/image1.gif ! comment faire pour ne faire ressortir que le nom du fichier dans le dernier parametre du preg_replace ? |
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 9 ![]() |
je me permets un petit up car pour le moment je n'ai toujours pas trouvé de solution.
en attendant : je fais Code :
|
||
|
|
00
|
|
|
#6 | ||
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
ça me paraît bien compliqué votre histoire d'autant plus que vous n'avez pas besoin d'échapper le caractère slash vu qu'il n'est ni utilisé comme délimiteur de l'expression régulière et n'est ni un méta-caractère.
J'ai effectué un petit test rapide avec : Code :
Julp. |
||
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 9 ![]() |
tout d'abord merci pour votre réponse, j'utilise les regexp pour la premiere fois aujourd'hui donc ne soyez pas étonné des erreurs qu'il peut y avoir dedans ;-)
donc je viens de tester le code : ca fonctionne effectivement dans les cas que vous avez entré dans le tableau mais pas sur mon site ... j'ai cherché un peu et j'ai constaté que s'il y a avait un espace ou un caractere juste derriere le .jpg , ca ne fonctionnait plus : Code :
je vous remercie |
||
|
|
00
|
|
|
#8 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Oui effectivement j'ai oublié de prendre en compte le contexte dans lequel ce code était utilisé : il suffit normallement de supprimer le signe dollar ($) à la fin de l'expression régulière. La ligne modifiée par rapport à votre code ci-dessus est la suivante :
Code :
$roww = preg_replace("#/upload/(.*)([^/]+\.(?:jpg|gif|png))#Usi", '/upload/$1miniature_$2', $roww); Julp. |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 9 ![]() |
ca a l'air simple avec vous les expressions régulieres
ca fonctionne Merci beaucoup pour votre aide bonne soirée TmR |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com