Foros del Web » Programando para Internet » PHP »

Duda con opendir()

Estas en el tema de Duda con opendir() en el foro de PHP en Foros del Web. <i>Saludos... Primero que nada, debo felicitarlos por la gran comunidad que tienen y todo el apoyo que brindan a los usuarios que como yo, siempre ...
  #1 (permalink)  
Antiguo 05/08/2009, 15:33
Avatar de LanbreGroteo  
Fecha de Ingreso: agosto-2009
Ubicación: $Mx->['Veracruz']
Mensajes: 69
Antigüedad: 14 años, 8 meses
Puntos: 1
Sonrisa Duda con opendir()

<i>Saludos...
Primero que nada, debo felicitarlos por la gran comunidad que tienen y todo el apoyo que brindan a los usuarios que como yo, siempre tenemos una duda.

Entre otras cosas, tengo el siguiente código y funciona muy bien, el problema es que no sé como hacerle para que únicamente me devuelva el archivo sin la extensión.

Código PHP:
function obtenerlen($path) {
$path "lenguaje/";
$files = array();
$fileNames = array();
$i 0;

if (
is_dir($path)) {
if (
$dh opendir($path)) {
while ((
$file readdir($dh)) !== false) {
if (
$file == "." || $file == "..") continue;
$fullpath $path "/" $file;
$fkey strtolower($file);
while (
array_key_exists($fkey,$fileNames)) $fkey .= " ";
$a stat($fullpath);
$files[$fkey]['size'] = $a['size'];
if (
$a['size'] == 0$files[$fkey]['sizetext'] = "-";
else if (
$a['size'] > 1024$files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " K";
else if (
$a['size'] > 1024*1024$files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mb";
else 
$files[$fkey]['sizetext'] = $a['size'] . " bytes";
$files[$fkey]['name'] = $file;
$files[$fkey]['type'] = filetype($fullpath);
$fileNames[$i++] = $fkey;
}
closedir($dh);
} else die (
"No pudo abrirse el directorio: $path");
} else die (
"La ruta no es un directorio: $path");
sort($fileNames,SORT_STRING);
$sortedFiles = array();
$i 0;
foreach(
$fileNames as $f$sortedFiles[$i++] = $files[$f];

return 
$sortedFiles;
}
$files obtenerlen("./");
echo 
"<br><form><select name=\"lenguaje\" class=\"form\">\n";
foreach (
$files as $file) print "<option value=\"".$file[name]."\">$file[name]</option>\n";
echo 
"</select></form>\n" 
De antemano, muchas gracias por su ayuda.
G.
  #2 (permalink)  
Antiguo 05/08/2009, 15:37
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Duda con opendir()

Hola , pues mira haz este cambio:

Código php:
Ver original
  1. $files = obtenerlen("./");
  2. echo "<br><form><select name=\"lenguaje\" class=\"form\">\n";
  3. foreach ($files as $file){
  4. $file=explode('.',$file['name']);
  5.  echo "<option value=\"".$file['0']."\">.$file['0']."</option>\n";
  6. }
  7. echo "</select></form>\n"

Saludos!

Última edición por jonatanc; 05/08/2009 a las 16:18
  #3 (permalink)  
Antiguo 05/08/2009, 15:48
Avatar de LanbreGroteo  
Fecha de Ingreso: agosto-2009
Ubicación: $Mx->['Veracruz']
Mensajes: 69
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Duda con opendir()

Me aparece este error:

"Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\AppServ\www\gnuke\bloques\bloque-Lenguaje.php on line 51"

La línea 51 es:
Código PHP:
    echo "<option value=\"$file['name']\">$file['name']</option>\n"
  #4 (permalink)  
Antiguo 05/08/2009, 15:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Duda con opendir()

COMO: Usar las comillas bien
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 05/08/2009, 16:19
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Duda con opendir()

Como te han dicho debemos aprender a usar las comillas bien , sinceramente me parece medio inutil escapar con / , es predible escribir asi y es más comodo.
Código php:
Ver original
  1. <?php
  2. echo '<a href="mi">a</a>';
  3. ?>
De ese modo te evitas escapar , sino averigua sobre los bloques heredoc.

Saludos!
  #6 (permalink)  
Antiguo 05/08/2009, 16:24
Avatar de LanbreGroteo  
Fecha de Ingreso: agosto-2009
Ubicación: $Mx->['Veracruz']
Mensajes: 69
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Duda con opendir()

Lo he probado ahora sin el "select" y no me aparece el error pero, me devuelve dos campos vacios, sin el nombre. Sólo aparecen los espacios.

El código modificado es:
Código PHP:
$files obtenerlen("./");
foreach (
$files as $file) {
    
$file explode('.',$file['name']);
    print 
"&nbsp;&nbsp;&nbsp;&nbsp;<b><a href=\"$file[name]\">$file[name]</a></b><br>\n"
Originalmente estaba:
Código PHP:
$files getFiles("./");
foreach (
$files as $file) print "&nbsp;&nbsp;&nbsp;&nbsp;<b><a href=\"$file[name]\">$file[name]</a></b><br>\n"
Gracias por su ayuda.
G.
  #7 (permalink)  
Antiguo 05/08/2009, 18:20
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Duda con opendir()

Estimado , aqui te publico un codigo que creo solucionara tu problema, fijese los cambios.

Código php:
Ver original
  1. <?php
  2.  
  3. function obtenerlen($path) {
  4. $files = array();
  5. $fileNames = array();
  6. $i = 0;
  7.  
  8. if (is_dir($path)) {
  9. if ($dh = opendir($path)) {
  10. while (($file = readdir($dh)) !== false) {
  11. if ($file == "." || $file == "..") continue;
  12. $fullpath = $path . "/" . $file;
  13. $fkey = strtolower($file);
  14. while (array_key_exists($fkey,$fileNames)) $fkey .= " ";
  15. $a = stat($fullpath);
  16. $files[$fkey]['size'] = $a['size'];
  17. if ($a['size'] == 0) $files[$fkey]['sizetext'] = "-";
  18. else if ($a['size'] > 1024) $files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " K";
  19. else if ($a['size'] > 1024*1024) $files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mb";
  20. else $files[$fkey]['sizetext'] = $a['size'] . " bytes";
  21. $files[$fkey]['name'] = $file;
  22. $files[$fkey]['type'] = filetype($fullpath);
  23. $fileNames[$i++] = $fkey;
  24. }
  25. closedir($dh);
  26. } else die ("No pudo abrirse el directorio: $path");
  27. } else die ("La ruta no es un directorio: $path");
  28. sort($fileNames,SORT_STRING);
  29. $sortedFiles = array();
  30. $i = 0;
  31. foreach($fileNames as $f) $sortedFiles[$i++] = $files[$f];
  32.  
  33. return $sortedFiles;
  34. }
  35. $files = obtenerlen("./");
  36. echo "<br><form><select name=\"lenguaje\" class=\"form\">\n";
  37. foreach ($files as $file){
  38. $sinextension=explode('.',$file['name']);
  39. echo  "<option value=\"".$file[name]."\">".$sinextension['0']."</option>\n";   
  40. }
  41. echo "</select></form>\n";
  42.  
  43. ?>
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 09:39.