IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Modifier url image AVANT affichage [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 43
    Points : 18
    Points
    18
    Par défaut Modifier url image AVANT affichage
    Bonjour,

    Je poste dans cette rubrique car je pense qu'il me faudra du regex à un moment ou à un autre, mais je ne suis pas sûre d'être au bon endroit. Je m'excuse d'avance donc si ce n'est pas le cas.

    EN GROS:
    Je voudrais modifier l'url d'une image avant que celle-ci ne s'affiche à l'écran.

    EN DETAIL:

    j'ai site de la forme www.nomdedomaine.com
    et un sous domaine : wwww.sousdomaine.nomdedomaine.com

    Le sous domaine est en fait reserver au mobile, je récupère donc les informations stock en base de donnée pour les diriger d'un côté ou de l'autre en fonction du user-agent.
    Pour ce faire, je passe par une redirection via .htaccess

    Jusque là tout va bien.

    La ou je coince c'est au niveau de l'affichage de mes images, elles sont mélangées avec le texte dans un seul champs.
    Dans la version ordi donc la première url, les images s'affiche parfaitement - normal c'était conçue pour.
    Dans la version mobile, étant donné que l'url est redirigée, les url des images écrite dans la bdd sont bonnes, mais la racine change ( le sous-domaine) du coup les images ne s'affichent pas.

    Mon idée, était donc de faire un traitement de la page a afficher, de récupérer les balise <img src="" alt="" class=""/> et de modifier l'url pour qu'elle soit entière du type http://www.nomdedomaine/images/.../... .jpg

    Problème c'est que la balise n'est jamais la même. J'ai toujours un début et fin de balise , mais le contenu change, parfois c'est title au lieu de alt, les class change. C'est pour cela que je pensais passer par les regex.

    Ma question: est-ce possible?
    Deuxième question: pour de l'affichage mobile, est-ce que ça risque d'être trop lourd?
    Dernière question : si oui, existe -t-il une autre solution plus optimissée?

    Merci d'avance à tout ceux/celles qui prendront la peine de lire et de m'aider.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 48
    Points : 47
    Points
    47
    Par défaut
    Salut

    je ne suis pas sûr d'avoir toutout compris, mais tu peux peut-être mettre le domaine des images en dur et modifier le htaccess pour qu'il ne fasse pas la réécriture pour ce répertoire.

    sinon pour optimiser le mieux serait sans doute de redimensionner plus petites tes images pour l'affichage mobile, à ce moment tu mets un répertoires images sur les deux répertoires, et au moment de l'upload, tu enregistre une image taillée pour mobile dans le répertoire mobile.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    Ah ben oui c'est pas bête comme idée !!
    Mais est-ce que je ne risque pas de faire du duplicate content? Parce que c'est vrai j'y pensais plus, mais effectivement il faut que je les réduise les images!!

    je ne suis pas sûr d'avoir toutout compris, mais tu peux peut-être mettre le domaine des images en dur et modifier le htaccess pour qu'il ne fasse pas la réécriture pour ce répertoire.
    La réecriture du répertoire est obligatoire, je peux pas passer au travers parce que toute mes pages sont en base de donnée. Et en physique je n'ai qu'une page "ossature" sur lequel tout s'affiche. C'est donc htaccess qui réécris mes url.
    Bref je peux pas passer à travers de cette réécriture, et c'est ce qui m'embete encore plus aujourd'hui car pour les images j'ai fait ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $contenant= 'blabl du text encore du text <img src="images/image-articles/image.jpg" alt="ceci est une image" class="image_gauche"/> blabla suplémentaire de text';
    	$debut='<img src="';
    	$debutlien = strpos($contenant, $debut)+ strlen($debut);
    	$fin = '.jpg';
    	$finlien= strpos($contenant, $fin);
    	$lien= substr($contenant, $debutlien, ($finlien - $debutlien));
    	echo $debutlien.'<br>';
    	echo $finlien.'<br>';
    	echo '<img src="'.$_SERVER['DOCUMENT_ROOT'].'/'.$lien.'.jpg"/>';
    Et bien même avec $_SERVER['DOCUMENT_ROOT'] je me retrouve avec l'url de l'image type :

    http://www.sousdomaine.nomdedomaine....cles/image.jpg

    en sachant que $lien me renvoie la bonne "terminaison de l'url de l'image" c'est à dire :/images/image-articles/image.jpg

    Pour que l'image s'affiche il me faudrais : http://www.ndd.com/images/image-articles/image.jpg

    Et même en admettant que j'écrive tout simplement :

    echo '<img src="http://www. ndd.com'.$lien.'.jpg"/>';

    Et bien il me sort : http://ssdomaine .ndd.com/http://www...cles/image.jpg

    a cause de la redirection !

    je sais pas comment faire autrement à par l'idée du repertoire avec les images redimensionné, effectivement ça serait au top car j'aurais pas besoin de faire tout ça, mais je voudrais eviter d'être pénaliser par du DC car j'en ai un paquet d'image!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    une bonne solution :
    1/ de redimensionner les images à l'upload pour les mobiles, et les enregistrer dans un dossier : "images/image-articles/mobile" ;
    2/ enregistrer les images avec le chemin ABSOLU :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="http://www.monsite.com/images/image-articles/image.jpg" ..../>
    3/ Pour le sous-domaine "mobile", remplacer simplement le chemin avec str_replace() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $contenu = str_replace('src="images/image-articles/', 'src="images/image-articles/mobile/' ,$contenu );
    N.B. Au lieu d'une redirection vers un sous-domaine, as-tu pensé au "Responsive Design" et "CSS media queries" ?

  5. #5
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    j'ai effectivement pensé au responsive design très à la mode en ce moment , mais qui n'est pas la solution adapter à mon site. J'ai une boutique dessus, et j'aurais beaucoup trop de changement à faire pour au final pas grand chose.
    Faire une version mobile me permet d'être en conformité avec google, tout en affichant les données que je veux, comme je les veux et eventuellement mettre du responsive design pour adapter cette versions au différent format de smartphone.

    En ce qui concerne ta solution sur les images je crains qu'elle ne puisse fonctionner :
    1/ de redimensionner les images à l'upload pour les mobiles, et les enregistrer dans un dossier : "images/image-articles/mobile" ;
    2/ enregistrer les images avec le chemin ABSOLU :
    Les url des images sont mélangée à du texte, le tout dans un champs de la bdd. La solution que j'avais (bout de code que j'ai envoyé tlh) c'était d'isoler l'url de l'image pour la réecrire correctement. Mais avec la redirection je bute sur un mur même avec une url réecrite en absolue. C'est précisément ce que j'ai indiqué.

    Je reflechi de mon côté

  6. #6
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    Re,

    Après un bon repas, j'ai fini par trouver une solution qui je pense répondra à tous mes problèmes. En tout cas sur le code test ça marche j'ai pas encore testé en reel, et finalement je n'avais pas besoin de faire une regex.

    Solution: jusqu'à présent je me borné à vouloir changer l'origine de l'image. Alors qu'en créant un simple répertoir et un copier coller des images le problème aurait été résolue. Pour palier à la difficulté lié au duplicate content, j'ai donc pensé modifier la terminaison de l'Url de l'image.

    Ce qui fait qu'au lieu d'avoir /image/image-article/nomdelimage.jpg
    j'ai image/image-article/nomdelimage-miniature. jpg

    Avec mon bout de code je ressort les balises contenant l'image, et je rajouter "miniature" derrière. Ainsi ça me permet:
    - de ne pas avoir de problème avec la redirection
    - avoir des images miniaturisé
    - pas de duplicat-content

    J'ai pas encore tester en grandeur reelle, j'aurais peut-être des adapatations à faire mais l'idée et là.

    Merci de m'avoir aidé, puisque c'est en vous lisant que la réponses m'est venue à l'idée, c'est d'ailleurs un couplet de vos idées

    Je passe le sujet en résolu.

    Merci

    Edit:
    je poste le code qui finalement etst le plus fiable, plus optimisé et plus simple pour travailler dans un texte contenant plusieurs images et modifier le nom de l'image :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $contenant= "votre texte avec les images";
    $type = array('.jpg', '.jpeg', '.png', '.gif');
    	$remplace =  array('_min.jpg', '_min.jpeg', '_min.png', '_min.gif');
    		echo str_ireplace ($type , $remplace , $contenant);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modifier code HTML avant affichage dans TWebBrowser
    Par iznogoud_23 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 21/07/2010, 15h27
  2. Chargement d'une image avant affichage
    Par Harry_polin dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 30/11/2009, 13h30
  3. Réponses: 5
    Dernier message: 21/04/2008, 10h09
  4. Changement d'url avant affichage d'un div
    Par ipeteivince dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/05/2007, 08h54
  5. [JDIC] modifier la page avant affichage
    Par iuz dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 16/07/2006, 15h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo