2009-08-02 8 views
0

Je voudrais utiliser un script de redimensionnement pour mes images (Timthumb). Je suis en train de tirer de la base de données de la première image contenue dans un message, et ajouter le chemin du script, ainsi que des instructions supplémentaires:PHP: tirer une image et modifier sa sortie

<?php 
     $content = $post->post_content; 
     preg_match_all('/src=\"https?:\/\/[\S\w]+\"/i', $content, $matches, PREG_SET_ORDER); 
     foreach($matches as $e) 
     echo '<img src="http://site/scripts/timthumb.php?'.$e[0].'&h=320&w=214&zc=1" title="" alt="">'; 
     { 
     } 
    ?> 

Bien que cela résonne tout ce qu'il faut, il ajoute, au milieu de l'étiquette, des guillemets doubles qui manquent le chemin de l'image (les mêmes guillemets doubles j'ai besoin pour détecter l'image):

<img src="http://site/scripts/timthumb.php?src="http://site/images/image.jpg"&h=320&w=214&zc=1" title="" alt=""> 

Mes questions sont:

  1. Comment feriez-vous pour supprimer les guillemets doubles (alors que j'en ai besoin dans un premier moment pour rechercher un modèle )?
  2. Et, comment feriez-vous pour tirer seulement la première image dans le message?

Un grand merci pour toute entrée

Répondre

2

Tout d'abord, utiliser des parenthèses pour capturer tout le bit dont vous avez besoin, l'URL elle-même. En second lieu, si vous avez besoin de la première image, puis il suffit d'utiliser preg_match, plutôt que preg_match_all:

$content = $post->post_content; 
if (preg_match('/src=\"(https?:\/\/[\S\w]+)\"/i', $content, $match)) 
{ 
    echo '<img src="http://site/scripts/timthumb.php?'. 
     urlencode($match[1]).'&h=320&w=214&zc=1" title="" alt="">'; 
} 

Notez comment la partie URL du regex est marquée par() - comme cela est d'abord entre crochets l'expression, il sera élément 1 du tableau $ match.

J'ai également urlencodé l'URL de l'image pour m'assurer que tout ce qui est dans cette correspondance est correctement codé pour être utilisé dans une URL.

+0

Paul: excellent! Merci beaucoup. Je l'ai utilisé sans l'urlencode, parce qu'il me donnait des signes '%' - est-ce ma configuration? Je travaille localement avec WAMP. – Peanuts

+0

Les% signes sont les urlencoding! Si vous les obtenez, cela montre que vous aviez des caractères qui devaient être encodés! –

Questions connexes