• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Bestimmten Teil eines Dateinames auslesen

T

TheBeat

Guest
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 "<div style='width: 50%; min-width: 100px; max-width: 300px; border-radius: 5px; border-style: double; border-color: gray; border-width: 1px; margin-left: 20px; margin-top: 25px; height: 360px; margin-bottom: 25px; box-shadow: 0px 8px 20px 0px gray; margin-right: 20px; display: inline-block'>
 
   <img src='$key' style='width: 100%; min-width: 100px; max-width: 300px; border-top: solid 1px gray; border-bottom: solid 1px gray; margin-top: 25px; height: 300px; cursor: pointer; margin-right: 20px;' ><i class='fa fa-comment-o' aria-hidden='true' style='color: black; float: right; margin-right: 10px; cursor: pointer'></i></div>";
?>

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 :D
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
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.
 
Werbung:
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:
Code:
\d+

https://regex101.com/r/HktYwV/1
 
Also laut deinem Code oben hast du bereits die User-ID.

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
 
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

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?
 
Werbung:
PHP:
foreach(glob('upload/bild_user'.$userid

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:)
 
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 "<div style='width: 50%; min-width: 100px; max-width: 300px; border-radius: 5px; border-style: double; border-color: gray; border-width: 1px; margin-left: 20px; margin-top: 25px; height: 360px; margin-bottom: 25px; box-shadow: 0px 8px 20px 0px gray; margin-right: 20px; display: inline-block'>
    
<img class='bild' src='".$test."' alt='Bild' style='width: 2%; min-width: 20px; max-width: 20px; border-radius: 20px; border-style: double; border-color: gray; border-width: 1px; margin-left: 10px; height: 20px; float: left; margin-top: 2px; margin-bottom: 2px; cursor: pointer'><p style='color: black; float: left; margin-left: 5px'>$userid</p>
    
   <img src='$key' style='width: 100%; min-width: 100px; max-width: 300px; border-top: solid 1px gray; border-bottom: solid 1px gray; height: 300px; cursor: pointer; margin-right: 20px;' ><i class='fa fa-comment-o' aria-hidden='true' style='color: black; float: right; margin-right: 10px; cursor: pointer'></i></div>";
?>

Wieso nimmt er nicht die User-IDs die er auch bei der glob abfrage ausliest ?
 
Werbung:
Zurück
Oben