Foros del Web » Programando para Internet » PHP »

Mostrar solo el nombre del archivo sin el path ni extencion...

Estas en el tema de Mostrar solo el nombre del archivo sin el path ni extencion... en el foro de PHP en Foros del Web. Holas, Estoy haciendo un script que lee un archivo txt y lo muestra periodicamente, el contenido de ese txt es una cadena que consiste en ...
  #1 (permalink)  
Antiguo 11/06/2008, 18:39
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 10 meses
Puntos: 7
Mostrar solo el nombre del archivo sin el path ni extencion...

Holas,

Estoy haciendo un script que lee un archivo txt y lo muestra periodicamente, el contenido de ese txt es una cadena que consiste en un archivo con su ruta completa, por ejemplo:

Archivo.txt:
C:\Mis Documentos\datos\carpeta2\archivo123.xxx



Lo que necesito es, al leer ese archivo, guardo ese string en una variable pero necesito filtrarla, eliminandole la ruta del archivo y su extencion para que quede solamente archivo123.

He estado probando con lo siguiente:
Código PHP:
<?php
$path 
'C:\Mis Documentos\datos\carpeta2\archivo123.xxx';
$file basename($path);
echo 
$file;
?>
pero solo me elimina la ruta hacia "archivo123.xxx" pero me mantiene la extencion y lo que deseo tambien es eliminar la extencion.


Saludos
  #2 (permalink)  
Antiguo 11/06/2008, 20:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Mostrar solo el nombre del archivo sin el path ni extencion...

si lees con calma la referencia de PHP te darías cuenta....

http://php.net/basename

Código PHP:
echo basename("el/que/es_un/pato.txt"".txt"); // nos da "pato" 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/06/2008, 20:38
Avatar de Tombar  
Fecha de Ingreso: junio-2008
Ubicación: /home/tombar
Mensajes: 198
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: Mostrar solo el nombre del archivo sin el path ni extencion...

Si la extencion xxx de tus archivos es siempre la misma puedes usar la misma funcion basename y pasarle un segundo parametro con la extencion

Código:
Referencia en el manual PHP.
http://www.php.net/manual/es/function.basename.php
si la extencion no es siempre la misma lo que tienes que hacer es lo siguiente.

Código PHP:
$path 'C:\Mis Documentos\datos\carpeta2\archivo123.xxx'

$file basename($path);

$file explode('.',$file);

$file $file[0];
$extension $file[1]; 
espero que te sea de utilidad
  #4 (permalink)  
Antiguo 11/06/2008, 21:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Mostrar solo el nombre del archivo sin el path ni extencion...

Ej. foo.bar.ext ... con explode() nos saldría mal...

Código PHP:
<?php
/**
 * (cadena[, punto?])
 *
 * Devuelve la extension logica del archivo, basandose
 * en el ultimo punto... prefija punto opcionalmente.
 */
function ext($text$dot false)
{
    
$ext // Extension natural
            
substr($textstrrpos($text'.'));
    if (!
$dot)
    { 
// sin punto...
        
return substr($ext1);
    }
    return 
$ext;
}
?>
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 16/06/2008, 01:13
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Mostrar solo el nombre del archivo sin el path ni extencion...

Hola, muchas gracias a tombar y pateketrueke, los dos codigos me sirvieron aunque el segundo me sirve mas ya que la extencion no siempre será la misma.

Aunque tengo un pequeño detalle, efectivamente elimina la extención pero no el punto que hay, por ejemplo si tengo c:\carpeta\archivo.txt me queda archivo.

Estuve metiendo mano en el codigo de la funcion, especificamente en la siguiente linea:

return substr($ext, 1);

cambiando el 1 por un 0 (cero) y ahora si me oculta el punto pero no se si hacer eso sea correcto.
Estuve mirando la info que aparece en php.net respecto a la funcion substr pero no logro entender bien respecto al codigo que me pasaste.

Saludos
  #6 (permalink)  
Antiguo 16/06/2008, 06:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Mostrar solo el nombre del archivo sin el path ni extencion...

lo explico...

Código:
function ext($text, $dot = false)
{
    $ext = // Extension natural
            substr($text,
/*
 strrpos devuelve la posicion (indice) a la derecha, String'Right'Position

una ves obtenido, se usa dentro de substr(cadena, desde, hasta) siendo esta
posicion del punto el desde ... mientras el hasta no importa,
se toma hacia el final... todo!
*/
strrpos($text, '.'));


    if (!$dot)
    { // sin punto...
        return substr($ext, 1);
/*
 aqui, colocamos la posibilidad de devolver el punto... ya que es desde
el punto como lo hicimos.... si el segundo parametro es null/false o no true
devuelve la extension (si punto)
*/
    }

/*
 por defecto entregamos el punto, ya que es util cuando usamos basename()
 ej.

  $archivo = 'un.ejemplo.foo';
  echo basename($archivo, ext($archivo));

  - esto resultaria en...  un.ejemplo ya que si con basename() no
entregamos el punto, no elimina la extension....
como dice en la referencia
*/
    return $ext;
}
espero haya sido claro... gracias!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 16/06/2008 a las 09:20
  #7 (permalink)  
Antiguo 16/06/2008, 09:17
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Mostrar solo el nombre del archivo sin el path ni extencion...

ok gracias, ahora si lo entiendo mejor.

Sorry por la ignorancia.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:43.