Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Como posso converter o array abaixo que me traz os diretórios para que eu possa fazer um echo no formato json?
<?php
$path = "images";
$dirs = glob($path . "/*", GLOB_ONLYDIR);
foreach($dirs as $dir){
$reg = array(
"FOLDER" => $dir
);
$return[] = $reg;
}
$return = json_encode($return);
echo $return;
?>
Não estou conseguindo mostrar no browser, o que é estranho porque no código abaixo onde trago somente imagens e não os diretórios, tudo funciona normalmente. E no código acima recebo Array to string conversion in C:\wamp64\...
$dir = "images/Sexta-feira-Noite/";
$images = glob($dir."*.jpg");
foreach($images as $image){
$registro = array(
"FILE" => $image
);
$retorno[] = $registro;
}
$retorno = json_encode($retorno);
echo $retorno.'<br><br>';O correto é você tratar o nome da pasta no ato da criação.
O correto é você tratar o nome da pasta no ato da criação.
Alguma sugestão de referência?
Pelo que vi, a pasta não é criada por meio de digitação, lógico. Você pega alguma parte de algum título e cria ela. Para limpar os acentos e eliminar espaços trocando-os por hífen, com a seguinte função:
<?php
function removeAcentos($string, $slug = false)
{
//Setamos o localidade
setlocale(LC_ALL, 'pt_BR');
//Verificamos se a string é UTF-8
#if(is_utf8($string))
#$string = utf8_decode($string);
//Se a flag 'slug' for verdadeira, transformamos o texto para lowercase
if($slug)
$string = strtolower($string);
// Código ASCII das vogais
$ascii['a'] = range(224, 230);
$ascii['e'] = range(232, 235);
$ascii['i'] = range(236, 239);
$ascii['o'] = array_merge(range(242, 246), array(240, 248));
$ascii['u'] = range(249, 252);
// Código ASCII dos outros caracteres
$ascii['b'] = array(223);
$ascii['c'] = array(231);
$ascii['d'] = array(208);
$ascii['n'] = array(241);
$ascii['y'] = array(253, 255);
//Fazemos um loop para criar as regras de troca dos caracteres acentuados
foreach ($ascii as $key => $item) {
$acentos = '';
foreach ($item AS $codigo)
$acentos .= chr($codigo);
$troca[$key] = '/[' . $acentos . ']/i';
}
//Aplicamos o replace com expressao regular
$string = preg_replace(array_values($troca), array_keys($troca), $string);
//Se a flag 'slug' for verdadeira...
if ($slug) {
//Troca tudo que não for letra ou número por um caractere ($slug)
$string = preg_replace('/[^a-z0-9]/i', $slug, $string);
//Tira os caracteres ($slug) repetidos
$string = preg_replace('/' . $slug . '{2,}/i', $slug, $string);
$string = trim($string, $slug);
}
return trim($string);
}
echo removeAcentos('minha pasta é essa');
?>
A saída deverá ser: minha-pasta-e-essa
Legal. Na verdade este álbum eu não criei a partir de um input. Como era só pra testes eu criei a pasta no windows mesmo. Mas em produção os álbuns serão criados num form mesmo, sem passar por um banco de dados. Ainda assim essa função sua será necessária eu acredito.
Beleza, se você quiser retirar espaços e acentos, a função é essa.
Resolvido. Tinha algumas pastas com acentos nos nomes. Removendo eles consegui mostrar o json na tela. Alguma forma de administrar pastas com nomes com acentos?