write read file_get_contents ejemplos php file string

read - php write file



PHP, obtener el nombre de archivo sin extensión de archivo (16)

Tengo este código PHP:

function ShowFileExtension($filepath) { preg_match(''/[^?]*/'', $filepath, $matches); $string = $matches[0]; $pattern = preg_split(''//./'', $string, -1, PREG_SPLIT_OFFSET_CAPTURE); if(count($pattern) > 1) { $filenamepart = $pattern[count($pattern)-1][0]; preg_match(''/[^?]*/'', $filenamepart, $matches); return strtolower($matches[0]); } }

Si tengo un archivo llamado my.zip , esta función devuelve .zip .

Quiero hacer lo contrario, quiero que la función devuelva my sin la extensión.

El archivo es solo una cadena en una variable.


@Gordon basename funcionará bien si conoce la extensión, si no puede usar explotar:

$filename = end(explode(".", $file));


@fire, en el caso de que el nombre de archivo use puntos, podría obtener el resultado incorrecto. Usaría el método @Gordon pero también obtendría la extensión, por lo que la función basename funciona con todas las extensiones, como esta:

$path = "/home/httpd/html/index.php"; $ext = pathinfo($path, PATHINFO_EXTENSION); $file = basename($path, ".".$ext); // $file is set to "index"


Casi todas las soluciones anteriores tienen el nombre de archivo que se muestra en la variable $ path

A continuación, el fragmento obtendrá el nombre del archivo ejecutado actual sin extensión

echo pathinfo(basename($_SERVER[''SCRIPT_NAME'']), PATHINFO_FILENAME);

Explicación

$ _SERVER [''SCRIPT_NAME''] contiene la ruta del script actual.


Como alternativa a pathinfo() , puede usar

  • basename() - Devuelve el componente del nombre de archivo de la ruta

Ejemplo del manual de 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"

Sin embargo, debes saber la extensión para eliminarlo con anticipación.

Sin embargo, dado que tu pregunta sugiere que tienes la necesidad de obtener la extensión y el nombre base, votaría la respuesta de Pekka como la más útil, porque te dará toda la información que desees acerca de la ruta y el archivo con un solo nativo función.


Corto

echo pathinfo(__FILE__)[''filename'']; // since php 5.2


Este único nombre de archivo devuelto sin ninguna extensión en 1 fila:

$path = "/etc/sudoers.php"; print array_shift(explode(".", basename($path))); // will print "sudoers" $file = "file_name.php"; print array_shift(explode(".", basename($file))); // will print "file_name"


No es necesario para todo eso. Verifique pathinfo() , le proporciona todos los componentes de su ruta.

Ejemplo del manual:

$path_parts = pathinfo(''/www/htdocs/index.html''); echo $path_parts[''dirname''], "/n"; echo $path_parts[''basename''], "/n"; echo $path_parts[''extension''], "/n"; echo $path_parts[''filename''], "/n"; // filename is only since PHP 5.2.0

Salida del código:

/www/htdocs index.html html index

Y alternativamente, puede obtener solo ciertas partes como:

echo pathinfo(''/www/htdocs/index.html'', PATHINFO_EXTENSION); // outputs html


No hay necesidad de escribir muchos códigos. Incluso se puede hacer solo con una línea de código. Mira here

A continuación se muestra el código de una línea que solo devuelve el nombre de archivo y elimina el nombre de la extensión:

<?php echo pathinfo(''logo.png'')[''filename'']; ?>

Imprimirá

logo

Fuente: here


Nombre de archivo sin extensión de archivo cuando no conoces esa extensión:

$basename = substr($filename, 0, strrpos($filename, "."));


Otro enfoque es mediante el uso de expresiones regulares.

$fileName = basename($filePath); $fileNameNoExtension = preg_replace("//.[^.]+$/", "", $fileName);

Esto elimina del último período . hasta el final de la cadena.


Puedes escribir esto

$filename = current(explode(".", $file));

Estos devolverán el elemento actual de la matriz, si no se usaron antes.


Si la extensión no se conoce, use esta solución

pathinfo(''D:/dir1/dir2/fname'', PATHINFO_FILENAME); // return "fname" pathinfo(''D:/dir1/dir2/fname.php'', PATHINFO_FILENAME); // return "fname" pathinfo(''D:/dir1/dir2/fname.jpg'', PATHINFO_FILENAME); // return "fname" pathinfo(''D:/dir1/dir2/fname.jpg'', PATHINFO_DIRNAME) . ''/'' . pathinfo(''D:/dir1/dir2/fname.jpg'', PATHINFO_FILENAME); // return "D:/dir1/dir2/fname"

PHP MAN función pathinfo


Si no sabe qué extensión tiene, puede intentar esto:

$ext = strtolower(substr(''yourFileName.ext'', strrpos(''yourFileName.ext'', ''.'') + 1)); echo basename(''yourFileName.ext'',''.''.$ext); // output: "youFileName" only

Trabajando con todas las posibilidades:

image.jpg // output: "image" filename.image.png // output: "filename.image" index.php // output: "index"


Su respuesta está por debajo de la solución perfecta para ocultar a la extensión de archivo en php.

<?php $path = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; echo basename($path, ".php"); ?>


en mi caso, uso debajo. No me importa cuál es su extensión. : D creo que te ayudará

$exploded_filepath = explode(".", $filepath_or_URL); $extension = end($exploded_filepath); echo basename($filepath_or_URL, ".".$extension ); //will print out the the name without extension.