expolde() Bei letzem Punkt in einem String
Thomas G.
- php
Ich verwende explode(), um eine Eingabe in Datei-Adresse und Datei-Erweiterung aufzuteilen.
(Das kommt dann in die DB, Dateisystemfunktionen kann ich hier nicht verwenden)
Das Problem ist, dass in der Adresse durchaus mehrere Punkte vorkommen können. Um die Dateierweiterung zu bekommen, müsste ich es bei letzten "." aufteilen. Hat jemand Lösungsvorschläge?
Danke im Voraus
Du kannst deinen String rückwärts durchsuchen und dann ausschneiden.
Gruß
Hanno
Hallo,
Das Problem ist, dass in der Adresse durchaus mehrere Punkte vorkommen können. Um die Dateierweiterung zu bekommen, müsste ich es bei letzten "." aufteilen. Hat jemand Lösungsvorschläge?
Versuche es so:
<?php
$dateiname="das.ist.ein.langer.name.txt";
// Position des letzten Punktes finden
for($i=strlen($dateiname)-1;$i>=0;$i--)
{
if($dateiname[$i]==".")break;
}
// Teilstring nach dem letzten Punkt auslesen
$erweiterung=substr($dateiname,$i+1,strlen(dateiname));
print $erweiterung; // txt
?>
MfG, Thomas
Hallo Thomas,
Das Problem ist, dass in der Adresse durchaus mehrere Punkte vorkommen können. Um die Dateierweiterung zu bekommen, müsste ich es bei letzten "." aufteilen. Hat jemand Lösungsvorschläge?
list ($erweiterung, $name) = explode ('.', strrev ($datei), 2);
$erweiterung = strrev ($erweiterung);
$name = strrev ($name);
Alternativ:
$p = strrpos ($datei, '.');
$name = substr ($datei, 0, $p);
$erweiterung = substr ($datei, $p+1);
Viele Grüße,
Christian
Hallo,
$p = strrpos ($datei, '.');
Auf die naheliegendsten Dinge kommt man manchmal nicht. Ich habe diese (mir durchaus bekannte) Funktion gerade nachgebildet:
function lastIndexOf($str,$suchstr)
{
for($i=strlen($str)-1;$i>=0;$i--)
{
if($str[$i]==$suchstr)break;
}
return $i;
}
MfG, Thomas