Wenn Bild gefunden, Bild ausgeben - Bildname nur zum Teil bekannt

unwohltaeter

Mitglied
Ist es irgendwie machbar, ein Bild auszugeben, wenn nur ein Teil des Bildnamens bekannt ist?
Zum Beispiel:
bildname-350xUNBEKANNTEBREITE.png

Das Bild mit UNBEKANNTEBREITE gibt es übrigens dann nur einmal.

Müsste irgendwie mit preg_replace bzw. preg_match machbar sein, oder?

Ist zwar bescheiden, dass ich immer nur nach Lösungen frage aber leider pressiert es mich ein wenig. Deswegen wäre ich dankbar, wenn mir jemand mit einer fertigen Lösung aushelfen könnte.
 
Zuletzt bearbeitet:
Müsste irgendwie mit preg_replace bzw. preg_match machbar sein, oder?
Korrekt!
Und zum Suchen des Bildes kann man [phpf]opendir[/phpf], [phpf]readdir[/phpf] und [phpf]closedir[/phpf] benutzen:
PHP:
$dir = opendir("dein-ordner");
$filename = "";
while ($entry = readdir($dir))
{
  if (preg_match("/bildname-350x/", $entry)!=0)
  {
    $filename = $entry;
    break;
  }
}
closedir($dir);
 
Kann ich eigentlich in (bzw. vor) das preg_match noch eine Variable setzen?
"bildname" = Variable

Noch was: Dateiname heißt leider doch anders - bildname-UNBEKANNTEHÖHE-300x.png

Wie muss hier das preg_match aussehen?
 
Zuletzt bearbeitet:
Du kannst den Bildnamen natürlich auch in eine Variable packen. Wenn das aber die Frage war, dann solltest du dich noch einmal mit den Basics von PHP auseinander setzen. Variabeln setzt du so:

PHP:
//$foo ist der Name der Variable, "bar" der Wert (in diesem Fall ein String)
$foo = "bar";

Für das Arbeiten mit preg_match setz dich am Besten mit regulären Ausrücken (regular expressions oder reg exp) auseinander. Anbei ein paar Links:

http://de.php.net/manual/de/function.preg-match.php
http://www.regular-expressions.info/tutorial.html
http://de.wikibooks.org/wiki/Websiteentwicklung:_PHP:_Reguläre_Ausdrücke

Ich weiss: Fixfertige Lösungen sind toll. Selbst Erarbeitetes ist jedoch erstens nachhaltiger und zweitens deutlich befriedigender.

So long, Igäl
 
Zuletzt bearbeitet:
Dass ich den Bildnamen in eine Variable packen kann, ist mir auch klar. Ich meinte nur wie bzw. ob ich den Bildnamen vor das preg_match stellen kann.

Ich möchte z.b. die Datei "spaghetti-UNBENKANNTEGROESSEx300.png" haben, weiß aber wie gesagt die Größe nicht, die ja dann über preg_match herauszufinden ist.

Dass selbsterarbeitete Lösungen besser sind, ist mir auch klar, nur habe ich, wie ich schon sagte keine Zeit mehr.
 
Zuletzt bearbeitet:
Dann bedanke ich mich mal recht herzlich! :D
Wenn ich das jetzt so sehe blicke ich schon einigermaßen durch.

Wie muss das Ganze jetzt eigentlich aussehen, wenn auch noch der Bildname 'ne dynamische Variable ist?
(Soll heißen, aus z.B. "Spaghetti" wird z.B. "Nudeln".)

Geht das hier?
PHP:
$bildname = "Spaghetti";
$pattern = $bildname . "/-(.*)-300px\.png/";
 
Zuletzt bearbeitet:
Was du genau wolltest konnte, zumindest ich, deiner Fragestellung nicht richtig entnehmen. Versuch deine Fragen so zu stellen, dass die, welche dir helfen wollen, auch verstehen was du wissen möchtest.

Woher bekommt dein Script den Bildnamen?
Wie sieht "UNBEKANNTEGROESSE" in der Realität aus? Sind das Zahlen, Buchstaben, Sonderzeichen?

Wenn du dir die Dokumentation der Funktion preg_match() anschaust (siehe obiger Link), siehst du wie du die Funktion füttern musst. Parameter 1 stellt dein Suchmuster dar (ein Reg-Exp-Pattern), Parameter 2 gibt an worin gesucht wird. Optional, in deinem Fall wohl sinnvoll, kannst du der Funktion als dritten Parameter ein Array mitgeben, worin die gefundenen Matches gespeichert werden.

Edit:
Falls du mal Zeit finden solltest:
http://de.wikibooks.org/wiki/Websiteentwicklung:_PHP:_Reguläre_Ausdrücke#preg_match.28.29
 
Zuletzt bearbeitet:
1. UNBEKANNTEGROESSE = eine dreistellige Zahl
2. Das Script bekommt den Bildnamen durch die Wordpress-Variable $post->post_title, die ich mit strtolower und str_replace "bearbeite"
 
PHP:
preg_match("/bildname-(\d{3})-300px\.png/", $bildname, $matches);
var_dump($matches);

Schaust dir mal an, was der var_dump ausgibt und entnimmst was du brauchen kannst.
 
Zurück