Carcleo 4 Denunciar post Postado Agosto 24, 2013 Pessoal. eu tenho um array com n posições. Cada posição tem o nome de um arquivo. Preciso alterar o nome de cada arquivo no array mas com uma condição: Caso, no nome do arquivo, não houver números, o nome do arquivo mantem se não, muda o nome. Exemplo: arquivo7.mp3 -> troca o nome arquivo.mp3 - Não troca o nome Como procurar por números no nome desse arquivo? A ideia é varrer o array e ver. Se Houver números, pegaria arquivo, retiraria o numero 1 e colocaria 001 no lugar. Logo, arquivo1.mp3 mudaria para arquivo001.mp3 Alguma orientaçao? Consegui fazer a primeira parte: <?php error_reporting(E_ALL); function renumera(&$a) { $j=0; for ($i=0;$i<count($a);$i++) { $nome_arquivo=substr($a[$i], 0, -4); if ( preg_match('/^[0-9]*$/', $nome_arquivo)) { $a[$i] = $a[$i]; } else { $j=$j+1; $nome_arquivo = preg_replace("/[^a-zA-Z\s]/", "", $nome_arquivo); $nome_arquivo=$nome_arquivo.$j.substr($a[$i], strlen($a[$i])-4, strlen($a[$i])); $a[$i] = $nome_arquivo; //Aqui é preciso concatenar o nome do arquivo(sem o número que estava antes) com a nueraçao ($j) e a extençao do arquvo } } return $a; } $a = Array('foo10.mp3', 'bar5.mp3', 'xpto.mp3', 'test4.mp3'); renumera ($a); print "<pre>"; print_r ($a); print "</pre>"; ?> Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Agosto 25, 2013 Mas a função, preg_match A ideia é verificar se no nome do arquivo (sem a extensão) há números ....... $nome_arquivo=substr($a[$i], 0, -4); if (preg_match('/^[0-9]*$/', $nome_arquivo)) { $a[$i] = $a[$i]; } ..... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Agosto 25, 2013 Ficou da forma abaixo mas não entendi muito as expressões regulares. Se alguém puder me orientar. Só sei que funcionou; <?php error_reporting(E_ALL); //pede ao php para mostrar erros caso esta função esteje desabilitada no servidor. function renumera(&$a) { $j=0; //inicia um contador para nomes de arquivos que NÃO possuam números. for ($i=0;$i<count($a);$i++) { $nome_arquivo=substr($a[$i], 0, -4); // 0 (0, -4) quer dizer que vamos retirar do nome do arquivo os 4 ultimos caracaters (no caso, a extensão) if (!preg_match("/[^a-zA-Z\s]/", $nome_arquivo)) // Se não houver números na variavel $nome_arquivo, então todo o nome pode se manter { $a[$i] = $a[$i]; } else //senão, passamos ao processo de retirar os números e compor o novo nome do arquivo { $j=$j+1; // incrementa $j que é o cantador das strings que tem numeros a serem retiraodos $nome_arquivo = preg_replace("/[^a-zA-Z\s]/", "", $nome_arquivo); //retira os números $nome_arquivo=$nome_arquivo.$j.substr($a[$i], strlen($a[$i])-4, strlen($a[$i])); // pega o conteudo se numeros concatena com o contador $j e com a extensão do arquivo $a[$i] = $nome_arquivo; //Entrega a concatenação à posiçao no arrtay. } } return $a; //retorna o array modificado Obs.: parâmetro da função(&$a) } $a = Array('foo10.mp3', 'bar5.mp3', 'xpto.mp3', 'test4.mp3'); // popula array a ser Mudada renumera ($a); //chama a função print "<pre>"; print_r ($a); // imprime o resultado print "</pre>"; ?> Compartilhar este post Link para o post Compartilhar em outros sites