Stringfunktion
jm
- php
Hallo,
ich bin auf der Suche nach einer Stringfunktion, mit welcher ich von einem String rechts 4 Zeichen abschneiden kann. Es geht speziell um Dateinamen, wie "test.doc"! Ich möchte aber nur "test" haben.
Ich habe nur Funktionen gefunden, wo ich das abgeschnittene speichern kann und da ich nicht weiß wie lang der Dateiname ist, kann ich auch nicht den Namen abschneiden. Könnte zwar die Stringlänge bestimmen, aber vielleicht geht das auch einfacher.
Kann mir jemand helfen und eine geeignete Funktion sagen???
Viele Grüße und Danke
jm
Hi jm,
ich bin auf der Suche nach einer Stringfunktion, mit welcher ich von einem String rechts 4 Zeichen abschneiden kann. Es geht speziell um Dateinamen, wie "test.doc"! Ich möchte aber nur "test" haben.
Wenn der Dateiname keine weiteren Punkte enthält, könntest du es mit explode() versuchen, dann hast du den Dateiname in $array[0], bzw. wenn es mehrere Punkte sind, müsstest du das letzte Array Element (mit count() arbeiten) rauslöschen und dann per implode() den Rest wieder zusammenfügen.
Ist die Dateiendung bekannt (z.B. immer .doc) sollte es auch mit basename() gehen (nicht ausprobiert), wo du als zweiten Parameter doc mit übergibst.
Ich habe nur Funktionen gefunden, wo ich das abgeschnittene speichern kann und da ich nicht weiß wie lang der Dateiname ist, kann ich auch nicht den Namen abschneiden. Könnte zwar die Stringlänge bestimmen, aber vielleicht geht das auch einfacher.
Du weißt aber schon, dass du bei substr() auch ganz einfach nur die letzen X Zeichen rausholen kannst?
MfG, Dennis.
Hi Dennis,
Du weißt aber schon, dass du bei substr() auch ganz einfach nur die letzen X Zeichen rausholen kannst?
Ja, das wusste ich schon. Dachte ja auch das ich das mit dieser Funktion machen kann. Aber was nützen mir die letzten x-Zeichen?? Ich brauche ja leider die davor.
Gruß
jm
Hello,
Du weißt aber schon, dass du bei substr() auch ganz einfach nur die letzen X Zeichen rausholen kannst?
Ja, das wusste ich schon. Dachte ja auch das ich das mit dieser Funktion machen kann. Aber was nützen mir die letzten x-Zeichen?? Ich brauche ja leider die davor.
So hat Dennis das bestimmt auch gemeint. Substr() kann einen beliebigen zusammenhängenden Teilstring aus dem Gesamtstring extrahieren.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi Tom,
So hat Dennis das bestimmt auch gemeint. Substr() kann einen beliebigen zusammenhängenden Teilstring aus dem Gesamtstring extrahieren.
Ja, aber abgesehen davon hier mal noch kurz ein Denkanstoß, wie man es machen könnte, wenn man die letzten drei Zeichen hätte (ungetestet):
$str = "mydata.doc"; //Filename
$type = substr($str, -4); //Type des Filenames herrausfinden
$name = str_replace($type, "", $str); //Type ersetzen durch ""
//Somit bleibt der Name ohne Type übrig
Aber das ist natürlich recht umständlich so, es ist da doch wesentlich einfacher pathinfo() zu nehmen (oder basename(), läuft aufs gleiche hinaus).
MfG, Dennis.
Hello,
ich bin auf der Suche nach einer Stringfunktion, mit welcher ich von einem String rechts 4 Zeichen abschneiden kann. Es geht speziell um Dateinamen, wie "test.doc"! Ich möchte aber nur "test" haben.
Soll nur "*.doc" abgeschnitten werden, oder auch anderslautende Extensions?
Den Hinweis auf basename() hast Du ja schon bekommen. Die Funktion kannst Du gut mit pathinfo() kombinieren. http://de.php.net/manual/de/function.pathinfo.php
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi Tom,
Soll nur "*.doc" abgeschnitten werden, oder auch anderslautende Extensions?
Es soll nur ".doc" abgeschnitten werden. Mehr nicht!
Gruß
jm
Hello,
Soll nur "*.doc" abgeschnitten werden, oder auch anderslautende Extensions?
Es soll nur ".doc" abgeschnitten werden. Mehr nicht!
Dann kannst Du
$neuerName = basename($alterName,'.doc');
oder
$neuerName = substr($alterName,0,-4);
benutzen.
Das beste wird sein, Du probierst mal ein bisschen mit den Funktionen herum; unterschiedliche Eingangswerte etc. Der Vorteil bei basename() mit 2. Paramter ist, das wirklich nur der Basis-Namensbestandteil übrig bleibt. Wenn die Daten 'von draußen' kommen, ist das immer sicherer.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
$neuerName = basename($alterName,'.doc');
oder
$neuerName = substr($alterName,0,-4);
Mit substr() hat es erstmal funktioniert. Ich schaue mir das aber nochmal in Ruhe an und überdenke deinen Rat zu basename().
Vielen Dank.
jm
Hallo!
Mit substr() hat es erstmal funktioniert. Ich schaue mir das aber nochmal in Ruhe an und überdenke deinen Rat zu basename().
Vielen Dank.
bedenke dass nicht alle Dateiendungen 3 Zeichen lang sind, z.B. ".jpeg". Dieses Problem umgeht pathinfo() z.B.
Grüße
Andreas
Hallo,
auch hallo,
wie wärs mit:
$shortstring = substr($longstring, 0, strlen($longstring)-4);
gruss aus berlin, volker