Ich suche nach einer kleinen Funktion, mit der ich die Erweiterung aus einem Dateinamen entfernen kann.
Ich habe viele Beispiele durch Googeln gefunden, aber sie sind schlecht, weil sie nur einen Teil der Zeichenfolge mit "entfernen". . Sie verwenden Punkt als Begrenzer und schneiden nur Schnur.
Schauen Sie sich diese Skripte an,
$from = preg_replace('/\.[^.]+$/','',$from);
oder
$from=substr($from, 0, (strlen ($from)) - (strlen (strrchr($filename,'.'))));
Wenn wir den String wie folgt hinzufügen:
Dies ist ein Beispiel für etwas
Es wird nur "This" zurückgegeben ...
Die Erweiterung kann 3 oder 4 Zeichen enthalten, daher müssen wir prüfen, ob sich der Punkt auf der Position 4 oder 5 befindet, und ihn dann entfernen.
Wie geht das?
Antworten:
Probier diese:
Dies entspricht also einem Punkt, gefolgt von drei oder vier Zeichen, die kein Punkt oder Leerzeichen sind. Die "3 oder 4" -Regel sollte wahrscheinlich gelockert werden, da es viele Dateierweiterungen gibt, die kürzer oder länger sind.
quelle
20120720.something.somethingelse.jpg
"$var"
{2,4}
anstelle von{3,4}
http://php.net/manual/en/function.pathinfo.php
quelle
Aus dem Handbuch, pathinfo :
Es muss kein vollständiger Pfad sein, um ordnungsgemäß zu funktionieren. Es wird genauso glücklich analysiert
file.jpg
wie/path/to/my/file.jpg
.quelle
Verwenden Sie den PHP-Basisnamen ()
(PHP 4, PHP 5)
var_dump(basename('test.php', '.php'));
Ausgaben: Zeichenfolge (4) "Test"
quelle
Dies ist eine ziemlich einfache Lösung und funktioniert unabhängig davon, wie lange die Erweiterung oder wie viele Punkte oder andere Zeichen in der Zeichenfolge enthalten sind.
Grundsätzlich sucht dies nur nach dem letzten Vorkommen von. und verwendet dann Teilzeichenfolge, um alle Zeichen bis zu diesem Punkt abzurufen.
Es ähnelt einem Ihrer gegoogelten Beispiele, ist jedoch einfacher, schneller und einfacher als reguläre Ausdrücke und die anderen Beispiele. Na imo sowieso. Hoffe es hilft jemandem.
quelle
.htaccess
Sie können das, was PHP eingebaut hat, verwenden, um ...
Wenn Sie jedoch nur mit einem Dateinamen (
.somefile.jpg
) arbeiten, erhalten Sie ...Sehen Sie es auf CodePad.org
Oder verwenden Sie einen regulären Ausdruck ...
Sehen Sie es auf CodePad.org
Wenn Sie keinen Pfad, sondern nur einen Dateinamen haben, funktioniert dies und ist viel kürzer ...
Sehen Sie es auf CodePad.org
Natürlich suchen beide nur nach der letzten Periode (
.
).quelle
.htaccess
Der folgende Code funktioniert gut für mich und ist ziemlich kurz. Es zerlegt die Datei einfach in ein durch Punkte begrenztes Array, löscht das letzte Element (das hypothetisch die Erweiterung ist) und reformiert das Array erneut mit den Punkten.
quelle
.htaccess
Eigentlich ist das absolut richtig. Gehen Sie voran und nutzen Sie das.
Die Dateierweiterung steht alles nach dem letzten Punkt, und es ist nicht erforderlich, dass eine Dateierweiterung eine bestimmte Anzahl von Zeichen enthält. Selbst wenn nur über Windows gesprochen wird, enthält es bereits Dateierweiterungen, die nicht auf 3-4 Zeichen passen, wie z.
.manifest
.quelle
.htaccess
und.htpasswd
in Apache-Umgebungen.Empfohlene Verwendung:
pathinfo
mitPATHINFO_FILENAME
quelle
Es gibt einige Möglichkeiten, dies zu tun, aber ich denke, eine der schnelleren Möglichkeiten ist die folgende
Eine andere Lösung ist dies. Ich habe es nicht getestet, aber es sieht so aus, als ob es für mehrere Zeiträume in einem Dateinamen funktionieren sollte
Ebenfalls:
$name
Enthält in all diesen den Dateinamen ohne die Erweiterungquelle
Ausgabe:
quelle
$the_extension = substr($image_name, $last_dot_index, $last_dot_index);
Fügen Sie das hinzu, um die Erweiterung der Datei zu erhalten.Wie bereits erwähnt, ist die Idee, die Erweiterung auf eine bestimmte Anzahl von Zeichen zu beschränken, ungültig. Ausgehend von der Idee von array_pop, diese begrenzte Zeichenfolge als Array zu betrachten, war diese Funktion für mich nützlich ...
Verwendung:
Ausgänge:
In Aktion:
http://sandbox.onlinephpfunctions.com/code/5d12a96ea548f696bd097e2986b22de7628314a0
quelle
Sie können die Länge des Musters für reguläre Ausdrücke mithilfe des
{x,y}
Operators festlegen .{3,4}
würde übereinstimmen, wenn das vorhergehende Muster 3 oder 4 Mal auftritt.Aber ich glaube nicht, dass du es wirklich brauchst. Was machen Sie mit einer Datei namens "This.is"?
quelle
Benutze das:
quelle
Versuchen Sie, diesen zu verwenden. es wird sicherlich die Dateierweiterung entfernen.
quelle
BEARBEITEN : Der klügste Ansatz IMHO, es entfernt den letzten Punkt und folgenden Text aus einem Dateinamen (auch bekannt als die Erweiterung):
Prost ;)
quelle
end()
soll aber nicht mit einer als Parameter übergebenen Funktion funktionieren. Es wird auch ein HinweisDies funktioniert, wenn eine Erweiterung mehrere Teile enthält und sowohl kurz als auch effizient ist:
quelle