BildURL aus String herausfiltern

gulo92

Mitglied
Hallo,

ich habe einen String mit Leerzeichen, Zeilenumbrüchen und Text sowie einer BildURL. Am Ende soll nur noch die Bild URL extrahiert dastehen. Ich habe es erst mit Strreplace versucht, aber keinen eleganten Ansatz gefunden. Würde mich freuen, wenn jemand einen kleinen Codeansatz hätte wie man das am besten macht.

Ausgang:

$string= "Ihr Bild: /ordner/uploads/d80ce83f39415328ce5f7230bf1ac14f_logo.png
Total for options selected is 0,00 €"

Ziel: http://www.url.de/ordner/uploads/d80ce83f39415328ce5f7230bf1ac14f_logo.png als String in einer Variable :D

Das Problem für mich ist auch, dass nach dem .png immer ein Zeilenumbruch kommt..

Danke für Tipps :)
 
Dafür bietet sich Regex an.. Davon ausgehend, dass die Bild-Url immer mit /ordner/ anfängt und eine typische Bildendung hat ( jpg png gif oder jpeg), könnte ein Regex zB so aussehen:

Code:
#(/ordner/uploads/)([a-z0-9]+)\.(png|jpg|jpeg|gif)#ims

mfg chmee
 
Hallo,

versuch es mal so:
PHP:
$string= "Ihr Bild: /ordner/uploads/d80ce83f39415328ce5f7230bf1ac14f_logo.png
Total for options selected is 0,00 €";

/* Delimiters: Leerzeichen, Zeilenumbruch */
$delimiters = '
';

/* String in Token unterteilen: */
$tok = strtok($string,$delimiters);
while($tok !== FALSE)
{
  $arrStr[] = $tok;
  $tok = strtok($delimiters);
}

/* Token-Array durchlaufen und prüfen, ob Bilddatei dabei ist: */
foreach($arrStr as $str)
{
  $arrImg = @getimagesize($str);
  if($arrImg !== FALSE)
    $path = realpath($str);
}

/* Pfad ausgeben: */
if (isset($path)) echo $path;
else echo 'Kein Bild gefunden.';
 
Danke erstmal für deinen Code, aber es müsste ja eigentlich true --> Bild gefunden / den Pfad ausgeben und bei mir steht "Kein Bild gefunden" ... hat der Code bei dir funktioniert?

Vielleicht nochmal zum besseren Verständnis:

Die Ausgabe soll sein:

http://www.url.de/ordner/uploads/d80...ac14f_logo.png

Diesen Pfad will ich als Variable weiterverwenden ..:)
 
Zuletzt bearbeitet:
..., aber es müsste ja eigentlich true --> Bild gefunden / den Pfad ausgeben und bei mir steht "Kein Bild gefunden" ... hat der Code bei dir funktioniert?
Ja bei mir funktioniert das. Du müsstest mal überprüfen, ob bei dir in der Variablen $delimiters wirklich das Leerzeichen und der Zeilenumbruch enthalten ist. Schreib die Variable evtl. mal so:
PHP:
$delimiters = ' ';
$delimiters .= '
';
Wieso erwartest du das "http:" im Schema in der URL, wenn deine Datei auf dem Server liegt, in dem auch das PHP-Skript läuft?
 
stimmt, das http brauch ich nicht wirklich..

Aber es geht bei mir trotzdem nicht - ich habe deinen kompletten Code kopiert, in php-Tags gepackt und auf den Server kopiert. Noch irgendwas vergessen? -.-

Dafür bietet sich Regex an.. Davon ausgehend, dass die Bild-Url immer mit /ordner/ anfängt und eine typische Bildendung hat ( jpg png gif oder jpeg), könnte ein Regex zB so aussehen:

eigentlich eine coole Idee .. habe es jetzt so:

PHP:
    $url = "dsadas/ordner/uploads/bild.jpgdasdasd
    das
      asd
    a
    ";
    if (preg_match('#(/ordner/uploads/)([a-z0-9]+)\.(png|jpg|jpeg|gif)#ims', $url)) {
    echo "Ist drin";
      } else {
    echo "nicht enthalten :(";
                 }


gemacht. Aber ich möchte ja als Rückgabewert nicht nur wahr oder falsch haben, sondern für denn fall, dass es vorhanden ist alles andere "wegschneiden" und nur den Pfad ausgeben.
Hast du dafür auch noch ein Code-Schnipsel? :)

Ich danke dir!
 
Schon mal
PHP:
$data = preg_match('#(/ordner/uploads/)([a-z0-9]+)\.(png|jpg|jpeg|gif)#ims', $url);
echo "<pre>";
var_dump($data);
echo "</pre>";
versucht? (Ergebnis der Funktion in einer Variable speichern anstatt nur als if-Clause benutzen..) Dort müssten alle Einzelteile drin sein, mit denen Du Deine url aufbauen kannst.

mfg chmee
 
gulo92 hat gesagt.:
... Aber es geht bei mir trotzdem nicht - ich habe deinen kompletten Code kopiert, in php-Tags gepackt und auf den Server kopiert. Noch irgendwas vergessen? -.-
Ja, wahrscheinlich. Die Bilddatei mit dem Namen muss natürlich auf dem Server existieren, ansonsten findet er kein Bild!
 
Zurück