PHP glob () en directorios entre corchetes
En una máquina Windows, el siguiente script:
<?php
mkdir("c:\\[test]");
file_put_contents("c:\\[test]\\test.txt", "some content");
chdir("c:\\[test]");
echo getcwd()."\n";
var_dump(glob('*'));
?>
Muestra esto:
C:\[test]
array(0) {
}
Cuando esto se espera:
C:\[test]
array(1) {
[0]=>
string(8) "test.txt"
}
Entiendo queglob
trata los corchetes como caracteres especiales, cuando se encuentra en elpattern
parámetro.
El patrón*
coincide con cualquier archivo en el directorio de trabajo actual. Sin embargo, glob () se comporta como si se ejecutara con el patrónc:\\[test]\\*
Los corchetes se interpretan como parte del patrón, cuando de hecho son parte del directorio.
Esglob
se supone que debe tratar a lacamin como parte de lamodel? Prefiero pensar que debería usar el directorio actual como punto de partida y luego procesar elpattern only.
(Intento de resumir): Elglob
a función @ actúa como si estuviera recibiendoc:\\[test]\\*
como patrón de coincidencia, y está intentando hacer coincidir cualquiera dec:\t\*
, c:\e\*
oc:\s\*
. Pero el patrón es en realidad*
y no debería estar tratando de igualar nada de eso.