Par exemple, comment puis-je obtenir Output.map
de
F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map
avec PHP?
Vous recherchez basename
.
L'exemple du manuel PHP:
<?php
$path = "/home/httpd/html/index.php";
$file = basename($path); // $file is set to "index.php"
$file = basename($path, ".php"); // $file is set to "index"
?>
J'ai fait cela en utilisant la fonction PATHINFO
qui crée un tableau avec les parties du chemin que vous pouvez utiliser! Par exemple, vous pouvez faire ceci:
<?php
$xmlFile = pathinfo('/usr/admin/config/test.xml');
function filePathParts($arg1) {
echo $arg1['dirname'], "\n";
echo $arg1['basename'], "\n";
echo $arg1['extension'], "\n";
echo $arg1['filename'], "\n";
}
filePathParts($xmlFile);
?>
Cela retournera:
/usr/admin/config
test.xml
xml
test
L'utilisation de cette fonction est disponible depuis PHP 5.2.0!
Ensuite, vous pouvez manipuler toutes les parties selon vos besoins. Par exemple, pour utiliser le chemin complet, vous pouvez procéder comme suit:
$fullPath = $xmlFile['dirname'] . '/' . $xmlSchema['basename'];
La fonction basename
devrait vous donner ce que vous voulez:
Étant donné une chaîne contenant un chemin d'accès à un fichier, cette fonction renverra le nom de base du fichier.
Par exemple, citant la page du manuel:
<?php
$path = "/home/httpd/html/index.php";
$file = basename($path); // $file is set to "index.php"
$file = basename($path, ".php"); // $file is set to "index"
?>
Ou, dans votre cas:
$full = 'F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map';
var_dump(basename($full));
Tu auras:
string(10) "Output.map"
Avec SplFileInfo:
SplFileInfo La classe SplFileInfo offre une solution orientée objet de haut niveau interface avec les informations pour un fichier individuel.
Ref: http://php.net/manual/en/splfileinfo.getfilename.php
$info = new SplFileInfo('/path/to/foo.txt');
var_dump($info->getFilename());
o/p: chaîne (7) "foo.txt"
Il existe plusieurs manières d’obtenir le nom du fichier et son extension. Vous pouvez utiliser le suivant qui est facile à utiliser.
$url = 'http://www.nepaltraveldoor.com/images/trekking/nepal/annapurna-region/Annapurna-region-trekking.jpg';
$file = file_get_contents($url); // To get file
$name = basename($url); // To get file name
$ext = pathinfo($url, PATHINFO_EXTENSION); // To get extension
$name2 =pathinfo($url, PATHINFO_FILENAME); // File name without extension
Essaye ça:
echo basename($_SERVER["SCRIPT_FILENAME"], '.php')
basename () a un bogue lors du traitement de caractères asiatiques comme le chinois.
J'utilise ceci:
function get_basename($filename)
{
return preg_replace('/^.+[\\\\\\/]/', '', $filename);
}
$filename = basename($path);
Vous pouvez utiliser la fonction basename () .
Pour faire cela dans un minimum de lignes, je suggérerais d'utiliser la constante DIRECTORY_SEPARATOR
intégrée avec la fonction explode(delimiter, string)
pour séparer le chemin d'accès en plusieurs parties, puis simplement extraire le dernier élément du tableau fourni.
Exemple:
$path = 'F:\Program Files\SSH Communications Security\SSH SecureShell\Output.map'
//Get filename from path
$pathArr = explode(DIRECTORY_SEPARATOR, $path);
$filename = end($pathArr);
echo $filename;
>> 'Output.map'
Basename ne fonctionne pas pour moi. J'ai le nom de fichier d'un formulaire (fichier). Dans Google Chrome (Mac OS X 10.7 (Lion)), la variable de fichier devient:
c:\fakepath\file.txt
Quand j'utilise:
basename($_GET['file'])
il retourne:
c:\fakepath\file.txt
Donc, dans ce cas, la réponse de Sun Junwen fonctionne le mieux.
Sur Firefox, la variable du fichier n'inclut pas ce fakepath.
Pour obtenir le nom de fichier exact à partir de l'URI, j'utiliserais cette méthode:
<?php
$file1 =basename("http://localhost/eFEIS/agency_application_form.php?formid=1&task=edit") ;
//basename($_SERVER['REQUEST_URI']); // Or use this to get the URI dynamically.
echo $basename = substr($file1, 0, strpos($file1, '?'));
?>
<?php
$windows = "F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map";
/* str_replace(find, replace, string, count) */
$unix = str_replace("\\", "/", $windows);
print_r(pathinfo($unix, PATHINFO_BASENAME));
?>
body, html, iframe {
width: 100% ;
height: 100% ;
overflow: hidden ;
}
<iframe src="https://ideone.com/Rfxd0P"></iframe>
C'est simple. Par exemple:
<?php
function filePath($filePath)
{
$fileParts = pathinfo($filePath);
if (!isset($fileParts['filename']))
{
$fileParts['filename'] = substr($fileParts['basename'], 0, strrpos($fileParts['basename'], '.'));
}
return $fileParts;
}
$filePath = filePath('/www/htdocs/index.html');
print_r($filePath);
?>
La sortie sera:
Array
(
[dirname] => /www/htdocs
[basename] => index.html
[extension] => html
[filename] => index
)
$image_path = "F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map";
$arr = explode('\\',$image_path);
$name = end($arr);