Heim  >  Artikel  >  Backend-Entwicklung  >  Mehrere Möglichkeiten, Dateierweiterungen in PHP zu ermitteln und abzurufen

Mehrere Möglichkeiten, Dateierweiterungen in PHP zu ermitteln und abzurufen

墨辰丷
墨辰丷Original
2018-06-07 13:49:282157Durchsuche

In diesem Artikel werden hauptsächlich verschiedene Methoden zum Beurteilen und Erhalten von Dateierweiterungen in PHP vorgestellt. Ich hoffe, dass er für alle hilfreich ist.

Der folgende Code dient zur Bestimmung der Dateierweiterung in PHP

<!DOCTYPE>
<html>
<head>
 <meta http-equiv="Content-type" content="text/html" charset="utf-8">
 <title>check file</title>
</head>
<body>
<b>文件扩展名验证</b>
<input type="text" name="int" value="文件.php" onblur="check(this)" id="int">
<input type="button" value="检测" onclick="check_value()">
<script>
 function check(obj){
  if(obj.value == "" || obj.value.length<3){
   alert("输入的长度不能小于3且不能为空!");
   obj.focus();
  }
 }
 function check_value(){
  var str = $("int").value;
  var repx = /\.(php|asp|jsp)$/i;
  var type = str.substring(str.lastIndexOf("."),str.length);
  if(type.match(repx) && str.lastIndexOf(".") != -1){
   alert("文件扩展名正确");
   $("int").focus();
  }else{
   alert("文件扩展名有误");
   $("int").focus();
  }
 }
 function $(obj){
  return document.getElementById(obj);
 }
</script>
</body>
</html>

N Möglichkeiten, die Dateierweiterung einzugeben PHP

Grundsätzlich folgende Methoden:

Die 1. Methode:

function get_extension($file)
{
substr(strrchr($file, &#39;.&#39;), 1);
}

Die 2. Methode:

function get_extension($file)
{
return substr($file, strrpos($file, &#39;.&#39;)+1);
}

Die 3. Methode Methode:

function get_extension($file)
{
return end(explode(&#39;.&#39;, $file));
}

4. Methode:

function get_extension($file)
{
$info = pathinfo($file);
return $info[&#39;extension&#39;];
}

5. Methode:

function get_extension($file)
{
return pathinfo($file, PATHINFO_EXTENSION);
}

Nach einem kurzen Blick auf die oben genannten Methoden scheinen sie alle zu funktionieren, insbesondere die 1. 2 Methoden, die ich ausprobiert habe Ich wusste vorher nicht, dass Pathinfo einen zweiten Parameter hat. Doch wenn man genau darüber nachdenkt, weisen die ersten vier Methoden verschiedene Mängel auf. Um die Dateierweiterung vollständig korrekt zu erhalten, müssen Sie mit den folgenden drei Sondersituationen umgehen können.

Keine Dateierweiterung

Der Pfad enthält die Zeichen., wie zum Beispiel /home/test.d/test.txt

Der Pfad enthält die Zeichen., aber die Datei verlängert sich nicht. Zum Beispiel /home/test.d/test

Es ist offensichtlich: 1 und 2 können mit der dritten Situation nicht umgehen, und 3 kann mit der ersten und dritten Situation nicht richtig umgehen. 4 wird korrekt behandelt, aber wenn die Erweiterung nicht vorhanden ist, wird eine Warnung ausgegeben. Nur Methode 5 ist die korrekteste Methode. Schauen Sie sich übrigens die Pathinfo-Methode an. Die Einführung auf der offiziellen Website lautet wie folgt:

$file_path = pathinfo(&#39;/www/htdocs/your_image.jpg&#39;);
echo "$file_path [&#39;dirname&#39;]\n";
echo "$file_path [&#39;basename&#39;]\n";
echo "$file_path [&#39;extension&#39;]\n";
echo "$file_path [&#39;filename&#39;]\n"; // only in PHP 5.2+

Es wird ein Array zurückgegeben, das bis zu vier Elemente enthält, aber es werden nicht immer vier sein. Wenn es beispielsweise keine Erweiterung gibt, gibt es auch keine Erweiterung Deshalb wird die Warnung in der 4. Methode gefunden. Aber phpinfo unterstützt auch den zweiten Parameter. Sie können eine Konstante übergeben, um einen bestimmten Teil der zurückzugebenden Daten anzugeben:

PATHINFO_DIRNAME – Verzeichnis
PATHINFO_BASENAME – Dateiname (einschließlich Erweiterung)
PATHINFO_EXTENSION – Erweiterung
PATHINFO_FILENAME – Dateiname (ohne Erweiterung) Erweiterung, PHP>5.2)

Die Werte dieser vier Konstanten sind 1, 2, 4 bzw. 8. Zuerst dachte ich, ich könnte durch die ODER-Operation mehrere angeben:

pathinfo($file, PATHINFO_EXTENSION | PATHINFO_FILENAME);

Später stellt sich heraus, dass dies nicht funktioniert. Dadurch wird nur die kleinste von mehreren ODER-Konstanten zurückgegeben. Das heißt, das kleinste Bit unter den vier Flag-Bits ist eine Konstante.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

PHP implementiert SSL-Verschlüsselung, -Entschlüsselung, -Verifizierung und -Signatur

Singleton-Modus in PHP Ausführliche Erklärung und Beispiele für Fabrikmuster

PHP unterstützt das Herunterladen chinesischer Dateien

Das obige ist der detaillierte Inhalt vonMehrere Möglichkeiten, Dateierweiterungen in PHP zu ermitteln und abzurufen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn