Bestimmten Teil eines Dateinames auslesen

Hallo,

hier erstmal mein Code:

[CODE]<?php
$array = array();
foreach(glob(‚upload/bild_user‘.$userid.‚{Lifestyle}‚.‘{.jpg,.jpeg,.png,*.gif}‘, GLOB_BRACE) as $image)
$array[$image] = filemtime($image);
arsort($array); // neueste Datei nach oben

foreach ($array as $key => $value)
echo "

";
?> [/CODE]

Wie ihr seht habe ich einen Code geschrieben mit dem es möglich ist Bilder aus einem Ordner auszulesen und sortiert nach Datum aufzulisten. Das ganze funktioniert auch wunderbar ! Nun möchte ich aber noch das auch angezeigt wird von welchem User das jeweilige Bild hochgeladen wurde. Das ganze soll links über dem Bild stehen.
Nun fehlt mir jedoch der Ansatz wie ich anfangen soll da die User-ID bei jedem Bild im Dateinamen steht.

Wie das ganze aufgebaut ist seht ihr auch in dieser Zeile: foreach(glob(‚upload/bild_user‘.$userid.‚{Lifestyle}‚.‘{.jpg,.jpeg,.png,*.gif}‘, GLOB_BRACE) as $image)

Letztendlich muss ich per php die $userid aus dem Dateinamen entnehmen und ausgeben doch irgendwie stehe ich auf dem Schlauch.

Ich muss es schaffen, aus dem Dateinamen die User-ID jedes Bildes zu filtern. Vielleicht weiß ja einer von euch was da zu machen ist :smiley:

Wieso? Du hast die IDs zusammen mit den referenzierten Bildern in der Datenbank gespeichert. Fetch den kompletten User anstatt nur dessen Profilbild.

Ne das bzw. die Bilder werden in einem Ordner gespeichert. Damit ich weiß welches Bild zu welchen User gehört, wird an den Dateinamen der bei jedem Bild gleich ist noch die Userid angehangen. Im Ordner liegen dann Bilder wie bspw. „Bilduser29.jpg“.

Deswegen suche ich nach einer Möglichkeit die User-ID aus dem Dateinamen zu filtern.

Also laut deinem Code oben hast du bereits die User-ID.

Ansonsten würde eine einfache Regex funktionieren, sofern keine anderen Ziffern vorkommen:

\d+

https://regex101.com/r/HktYwV/1

Inwiefern ? Mit glob suche ich ja nur ein Muster durch. Die User-ID hole ich mir ja aus der Datenbank.
Ich will ja bei jedem Bild die User-ID ermitteln, ansonsten weiß ich ja nicht welches Bild zu welche nicht User gehört oder nicht ? Die User-ID im Dateinamen verrät mir ja zu welchem User das Bild passt

[PHP]foreach(glob(‚upload/bild_user‘.$userid[/PHP]

Wie dem auch sei, mit oben genannter Regex kannst du Zahlen aus dem Dateinamen extrahieren.

Über die Sicherheitsrisiken die dadurch entstehen könnten muss ich nichts sagen, oder?

Ja doch wäre vielleicht gut zu wissen:)

Meinte damit nur dass je nach Dateiname, Lücken/Fehler entstehen könnten.
Bspw. wenn weitere Ziffern irgendwo im Dateipfad vorkommen.

[CODE]<?php
$array = array();
foreach(glob(‚upload/bild_user‘.$userid.‚{Lifestyle}‚.‘{.jpg,.jpeg,.png,*.gif}‘, GLOB_BRACE) as $image)
$array[$image] = filemtime($image);
arsort($array); // neueste Datei nach oben

$test = „http://192.168.178.61/PHPversion/upload2/profilbild_user$userid“;

foreach ($array as $key => $value)
echo "

Bild

$userid

";
?> [/CODE]

Wieso nimmt er nicht die User-IDs die er auch bei der glob abfrage ausliest ?