2009-08-02 4 views
0

Ich möchte ein Größenänderungsskript für meine Bilder verwenden (Timthumb). Ich versuche, aus der Datenbank das erste Bild in einem Beitrag enthalten sind, zu ziehen, und an das Skript, um es den Pfad hinzufügen, sowie einige zusätzliche Anweisungen:PHP: Ziehen eines Bildes und Ändern der Ausgabe

<?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="">'; 
     { 
     } 
    ?> 

Während dies alles was ich brauche Echo ist, es in der Mitte des Etiketts, fehlen einige doppelte Anführungszeichen hinzufügt, die den Pfad des Bildes (die gleiche doppelte Anführungszeichen ich das Bild zu erfassen, müssen):

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

Also meine Fragen sind:

  1. Wie würdest du diese entfernen? doppelte Anführungszeichen (während ich brauche sie in einen ersten Moment nach einem Muster zu suchen)?
  2. Und, wie würdest du mit nur das erste Bild in der Post ziehen?

Vielen Dank für jede Eingabe

Antwort

2

Zuerst benutzen Sie Klammern nur die Bit zu erfassen Sie müssen die URL selbst. Zweitens, wenn Sie nur das erste Bild benötigen, dann nur preg_match verwenden, anstatt 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="">'; 
} 

Beachten Sie, wie der URL Teil der Regex ist gekennzeichnet mit() - als dieser ersten Ausdruck in eckigen Klammern, so wird es sein, Element 1 von $ match-Array.

Ich habe auch die Bild-URL urlencodiert, um sicherzustellen, dass alles in dieser Übereinstimmung für die Verwendung in einer URL korrekt codiert ist.

+0

Paul: ausgezeichnet! Danke vielmals. Ich habe es ohne den Urlencode benutzt, weil es mir '%' Zeichen gab - ist das meine Konfiguration? Ich arbeite lokal mit WAMP. – Peanuts

+0

Die% -Zeichen sind die Urlcodierung! Wenn Sie sie erhalten, zeigt es, dass Sie Zeichen hatten, die kodiert werden mussten! –