Encore raccourcir une chaîne

Eléphanteau du PHP | 15 Messages

30 janv. 2009, 13:09

Bonjour,

Le week-end dernier, j'avais posé une question pour savoir comment raccourcir une chaîne comme http://www.viwiv.com/lp-content/uploads ... 25x300.jpg en http://www.viwiv.com/lp-content/uploads ... t00302.jpg. Blorf m'avait conseillé l'emploi de l'expression régulière...
$url = 'http://www.viwiv.com/lp-content/uploads/2008/08/pict00302-225x300.jpg'; 
$new_url = preg_replace('/-\d+x\d+/', '', $url); 
echo $new_url;
... qui me donne entière satisfaction et m'a évité des heures de galère à plonger dans les arcanes du Web. J'ai essayé de me plonger dans le charme des expressions régulières, mais demeure perplexe.

Aujourd'hui, je souhaiterai utiliser une deuxième expreg pour arriver au résultat inverse, à savoir transformer la chaîne http://www.viwiv.com/lp-content/uploads ... t00302.jpg en http://www.viwiv.com/lp-content/uploads ... 25x300.jpg.

Je vous rassure, ma santé mentale est excellente (!), mais je veux ajouter une deuxième fonctionnalité à mon petit code.

Je vous remercie pour votre aide,

Cordialement,

V.

ViPHP
ViPHP | 3607 Messages

30 janv. 2009, 14:50

Alors il sera possible d'insérer quelque chose entre le nom de l'image et son extension... mais ou comptes tu récupérer ces infos?
Sinon ben ç asera quelque chose comme ça:

Code : Tout sélectionner

#([a-zA-Z0-9]+)(\.jpg)#
pour l'expression et pour le replace:

Code : Tout sélectionner

$1-225x300$2

Eléphanteau du PHP | 15 Messages

30 janv. 2009, 17:24

Bonjour Jojo,

Merci pour ta réponse :)

Pour répondre à ta question, le but est de récupérer le nom d'une image et de sa vignette.

En revanche, et sans l'avoir testé, le preg_replace que tu replaces équivant à un str_replace, où je ne pas compris la documentation ?

Je pensais qu'une expression régulière comme la première me permettrait de m'affranchir du problème de l'extension, qui peut-être .jpg, .jpeg, .gif ou .png, mais peut-être ai-je mal posé le problème.

Merci !

V.

Eléphant du PHP | 170 Messages

30 janv. 2009, 21:12

Bonsoir,
<?php

$url = 'http://www.viwiv.com/lp-content/uploads/2008/08/pict00302.jpg';

$size = GetImageSize($url);
$new_url = preg_replace('/(.+)\.([^.]+)$/', '$1-'.$size[0].'x'.$size[1].'.$2', $url);

echo $new_url;

?>
là on est dans le bizarre ...

Eléphanteau du PHP | 15 Messages

05 févr. 2009, 19:30

Bonsoir,

Merci tardivement (pour cause de voyage) pour vos réponses !

En fait, ce forum est très utile : il oblige à réfléchir avant de poser la question (parfois, sa mise en forme intelligible permet de s'apercevoir des failles de son raisonnement) et la perplexité des intervenants permet de s'interroger.

Je mets "résolu" à la question, même si j'ai finalement enployé un très simple... str_replace !

Encore toute ma gratitude.

V.