Foros del Web » Programando para Internet » PHP »

como obtener el solo el nombre del archivo

Estas en el tema de como obtener el solo el nombre del archivo en el foro de PHP en Foros del Web. estoy haciendo un script que hace una copia de un archivo cuando cargo de nuevo el script este comprueba si el archivo a copiar se ...
  #1 (permalink)  
Antiguo 15/06/2003, 13:09
 
Fecha de Ingreso: marzo-2003
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 0
como obtener el solo el nombre del archivo

estoy haciendo un script que hace una copia de un archivo
cuando cargo de nuevo el script este comprueba si el archivo a copiar se actualizo o no
si existe una actualizacion se copia sino no existe alguna actualizacion en el archivo no se copia

ya ahora lo que quiero hacer
quiero automatizar el sistema osea que no tenga que cambiarlo a cada rato por lo cual queria preguntarles como se puede hacer esto en php

como obtengo solo el nombre del archivo que se esta ejecutanto actualmente

se puede con $PHP_SELF pero este tambien entrega la ruta del archivo y su extencion

yo solo quiero el nombre se podria hacer con explode pero tendria que cambiar cada vez el script cada vez que me cambio de hosting

gracias por cualquier ayuda
  #2 (permalink)  
Antiguo 15/06/2003, 13:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Usa:

echo basename($PHP_SELF);

y mejor si usas los arrays superglobales:

Código PHP:
echo basename($_SERVER['PHP_SELF']); 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 15/06/2003, 13:41
 
Fecha de Ingreso: marzo-2003
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 0
Probe el codigo que pusiste cluster pero el problema es que tambien te entrega la extencion del archivo

pero despues que puse el mensaje pude encontrar como hacer
jeje
Código PHP:

$filename 
explode("/",$PHP_SELF);
end($filename);
$filename explode("."pos($filename));
reset($filename); 
y cuando necesiten el nombre hay que poner

pos($filename)

igual gracias cluster
salu2

Última edición por kech; 15/06/2003 a las 14:14
  #4 (permalink)  
Antiguo 15/06/2003, 14:29
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Si miras en el manual basename() http://es2.php.net/basename , veras que tiene un segundo parametro, que permite especificando ahi la extension te devuelva el nombre sin extension. Como supongo que siempre lo usas para ficheros PHP, el sufijo lo sabras de antemano.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 15/06/2003, 16:58
 
Fecha de Ingreso: marzo-2003
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 0
el problema si lo hago haci como mensionas es que no se que extencion tendrian los archivos al final por lo cual no me funcionaria

gracias a todos por la ayuda pero al final me quedo con el que mensiono ya que igual no estan largo el codigo

salu2
  #6 (permalink)  
Antiguo 15/06/2003, 17:25
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 16 años, 4 meses
Puntos: 9
mira mejor trata de extraer el nombre de la extensión con una variable, suponte tu que lo llamas $id, aqui te paso como capturar la extensión:

Código PHP:
$restar=substr ($id, -3); 
Y ahi está, si tienes de cuatro la extensión, pues ponle en vez de tres a 4, y ya con eso.

No te rindas, odio la gente que se rinde y mas cuando se tiene la respuesta en el aire.

Salu2
  #7 (permalink)  
Antiguo 15/06/2003, 18:14
 
Fecha de Ingreso: marzo-2003
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 0
jejeje es que ya me esta funcionando con el codigo que puse anteriormente
y era mas que nada para llegar a no tener que tocar el codigo nunca
pensando en todas las posibles cambios del archivo

gracias lado2mx por ver otras posibilidades de como hacer el codigo
salu2
  #8 (permalink)  
Antiguo 15/06/2003, 21:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
kech .. no sé que haces con tu archivo (el nombre del mismo) .. supongo que te lo guardas en alguna BD ..

El caso que lo que guardes en tu BD y lo que "presentes" puede ser completamente diferente .. Por lo tanto si se trata de guardarte ese dato (el nombre del archivo) en una BD yo me guardo el nombre completo: cosa.tal y cuando presento el nombre del archivo en fomato "amigable" lo que hago es usar basename() con o sin segundo parámetro .. y por otro lado obtengo la extensíon para lo que necesite (ejemplo asignarle un "icono" según su estensión ..).

Lo mismo es aplicable si estas haciendo un listado de tus archivos de un directorio ...

Date cuenta que un "explode" al "punto" . imagina un archivo típo:

funciones.inc.php

Piensalo .. (el base name ya identifica el último . (punto) ..) ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 16/06/2003, 17:21
 
Fecha de Ingreso: marzo-2003
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 0
no lo que necesitaba hacer es sacar el nombre del archivo despues concatenarlo a un nombre para crear un archivo temporal como un cache
aqui esta el script que ocupo
es una funcion que copia un archivo de una pagina a otra y cuando carga nuevamente comprueba si hay una actualizacion en la pagina si la hay copia el archivo si no no copia el archivo y termina el script

ingreso los datos de path y categoria y con eso crea el archivo temporal y cada script tiene su propio archivo temporal

Código PHP:
function existeact($path,$categoria){
      global 
$pathtemp,$PHP_SELF,$filestemp;
      
$scriptname explode("/",$PHP_SELF);
      
end($scriptname);
      
$scriptname explode("."pos($scriptname));
      
reset($scriptname);
      
$filestemp "./temp/";

      
$file $filestemp.pos($scriptname).$categoria;
      
$filetemp $filestemp.pos($scriptname).$categoria."1";
      if(
file_exists($filetemp)){
          
unlink($filetemp);
          
rename($file$filetemp);
          
$size1 filesize($filetemp);
          }
      else{
          @
rename($file$filetemp);
          @
$size1 filesize($filetemp);
          }
      if(
copy($path$file)){
          
$pathtemp $file;
          
$size2 filesize($file);
          }
      else{
          
$pathtemp $path;
          }

      if(isset(
$size2)){
            if (
$size1 == $size2){
            echo 
"ningun cambio";
            exit();
            }
        }
    } 

salu2
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 20:14.