Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

Achar vários caracteres de uma vez na string

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.