Ir ao conteúdo

PHP Destrinchar string com diferentes padrões


Ir à solução Resolvido por DiF,

Posts recomendados

Postado

Estou fazendo um sistema e nele tem uma parte de videos tutoriais/aulas. Porém não tem um nome padrão. Assim que entro em algum diretorio, eu pego todos os nomes e transformo em um array.

O problema está quando o usuario pesquisa o numero da aula.

dentro do array eu posso ter:

Spoiler

 

Biologia_Celular_e_Molecular_-_01_VF.mp4    
Matematica_S2_-_01_MQ.mp4    
Imunologia_-_09_p2.mp4
04v2.mp4
01_MQ.mp4

8.mp4

02.mp4

 

 

Como eu pensei:

Iria limpar a string inicialmente tirando '.mp4', que posso adicionar no final.

Agora para pegar o numero da aula, que pensei: tudo em volta do numero, eu tiro e dps coloco de voltar. tipo: Imunologia_-_09_p2.mp4
1: Imunologia-_09_p2
2: transforma array=>

[0] Imunologia_-_

[1] 09

[2] _v2

com isso posso achar a aula e criar um botão para avançar a aula.

....

Mas como fazer essa separação, caso tenha algo em volta do numero da aula ???

  • Moderador
  • Solução
Postado

@_LP_ Olá,

Não seria mais fácil usar um banco de dados?

Você registra os dados da video aula, como nome, descrição e outras coisas...  e então quando for procurar, baseia-se pelo valor ID do registro no banco de dados. 

 

Do jeito que você está fazendo, primeiro é criado um array de nomes de arquivos de vídeo.  depois você teria que usar o explode para separar cada parte do nome como no seu se exemplo.. porém ali no arquivo em si, tem dois separadores... um _-_ e outro _   com isso .. você teria que fazer dois explodes, mas alguns não possuem separadores... 

Fica bem ruim.. Ou você renomeia tudo e deixa em ordem sequencial com apenas um separador..  ou teria que fazer esse monte de explode...

 

enfim,  usar array para isso é trabalhoso... você resolve isso fácil com o mysql. 

Exemplo de site que usa banco de dados:  youtube

  • Curtir 1
Postado
2 horas atrás, _LP_ disse:

com isso posso achar a aula e criar um botão para avançar a aula.

....

Mas como fazer essa separação, caso tenha algo em volta do numero da aula ???

Depois implemente a parte em que faz um busca dentro desse resultado

/* Aqui a variável $linha poderia receber os dados vindos de um array */
$linha = "Imunologia_-_09_p2.mp4";

/* Quebro a string usando o caractere coringa para ser o separador no caso escolhi o underline */
$quebra = explode("_",$linha);

/* Para o meu laço eu verifico o tamanho da quebra da string */
$totalDeQuebra = count($quebra);

for($i=0; $i < $totalDeQuebra; $i++) {
   echo "<br>".$quebra[$i]; /* Montei aqui o resultado pulando linhas para melhor viauslisar */
}

Opcional a isso você pode usar expressões regulares para encontrar os numero assim por exemplo:

$artigos = [
    "Art. 1 Imunologia 23",
    "Art. 2 Infectologia 34",
    "Art. 3 BioMedicina 1",
    "Art. 4345 Matemática 2",
    ];
    
$artigosLen = count($artigos) -1;

for ($i=0; $i <= $artigosLen; $i++) {
    preg_match("/Art\. (\d+)/i",$artigos[$i],$match);
    echo "<br>".$match[1];
}

Mas acho que a sugestão do @DiF, lhe daria menos trabalho e seria mais organizado até.

Postado

@DiF a ideia do banco, eu tinha descartado pois são muitos arquivos de aula. Ficaria bom porém iria dar um trabalho bem grande, por isso pensei na ideia de pesquisar com nome.

Porém estou vendo que se não houver jeito, vai ser ou ter esse trabalho de passar tudo pro banco, ou ir em cada materia e arrumar os nomes

 

@fspjonny valeu a ideia, porém desse jeito com alguns separadores, iria encrencar e teria q fazer outro explode. Pelo jeito nao tem caminho mais fácil nao.. vai ter que ser na marra kkkj e realmente vai ficar bem mais organizado

 

 

Muito obrigado as respostas

Postado
16 minutos atrás, _LP_ disse:

@DiF a ideia do banco, eu tinha descartado pois são muitos arquivos de aula. Ficaria bom porém iria dar um trabalho bem grande, por isso pensei na ideia de pesquisar com nome.

Porém estou vendo que se não houver jeito, vai ser ou ter esse trabalho de passar tudo pro banco, ou ir em cada materia e arrumar os nomes

 

@fspjonny valeu a ideia, porém desse jeito com alguns separadores, iria encrencar e teria q fazer outro explode. Pelo jeito nao tem caminho mais fácil nao.. vai ter que ser na marra kkkj e realmente vai ficar bem mais organizado

 

 

Muito obrigado as respostas

Ah sim, caminho fácil não há, voce poderia ter até um array de separadores, mas realmente já acho que ficaria tabajara demais...a opção do @DiF, sem dúvidas é a mais cabível.

  • Moderador
Postado
1 hora atrás, _LP_ disse:

a ideia do banco, eu tinha descartado pois são muitos arquivos de aula. Ficaria bom porém iria dar um trabalho bem grande, por isso pensei na ideia de pesquisar com nome.

Mas você não vai colocar os vídeos no banco de dados, apenas o nome do arquivo. Pesquisar um registro em uma tabela de centenas de milhares de registros não leva tanto tempo...Imagine, o nosso fórum.. temos mais de 1.2 milhão de tópicos, um pouco mais de 7 milhões de postagens.  Como são textos... retorna um resultado rápido..

 

No seu caso, a ideia é fazer um playlist de vídeo, com o banco de dados, você pode agrupar por categorias. e adicionar em uma playlist somente os vídeos daquela categoria por exemplo matemática.  Você faria a playlist em ordem numérica. 

Dá para fazer um sisteminha bem legal usando jQuery, php e o banco de dados. :thumbsup:

 

Postado
9 horas atrás, _LP_ disse:

@DiF a ideia do banco, eu tinha descartado pois são muitos arquivos de aula. Ficaria bom porém iria dar um trabalho bem grande, por isso pensei na ideia de pesquisar com nome.

Porém estou vendo que se não houver jeito, vai ser ou ter esse trabalho de passar tudo pro banco, ou ir em cada materia e arrumar os nomes

voce pode fazer o banco de dados no excel e depois colocar no banco de dados como csv porque inserir dados no banco de dados realmente demora mais com o excel é bem fácil e fica mais organizado pra você, e ainda você pode criar uma coluna com o nome das aulas e fazer a busca por la  e assim fica bem mais fácil a pesquisa pra você e pro usuário. Por exemplo, eu criei um banco de dados sql com 4500 linhas em 2 dias usando as formulas do excel pra me ajudar

  • Moderador
Postado
7 horas atrás, Matheus Evandro Rech disse:

voce pode fazer o banco de dados no excel

Não...   jamais faça isso,  Não recomende algo que não é.    Excel não é um banco de dados. Pode até servir como um em algumas ocasiões, mas não é o caso aqui. O cara tá desenvolvendo uma aplicação web de vídeos...  Imagina o youtube usando excel....  kkkkkkkkkkkkk

 

Desculpe, mas este foi um péssimo conselho para desenvolvimento web. 

7 horas atrás, Matheus Evandro Rech disse:

Por exemplo, eu criei um banco de dados sql com 4500 linhas em 2 dias usando as formulas do excel pra me ajudar

Mas no caso, do usuário não... não vai ter 4500 linhas,  até pode ter, mas certamente os vídeos serão postados gradativamente.

 

Ele mesmo vai fazer a playlist e quando o usuário for logar para ver, já vai estar tudo organizado por categorias ou assuntos... 

Sem dúvidas, não há o que discutir, usar um banco de dados Mysql ou similar  é totalmente recomendado.

 

Se fosse para recomendar algo da microsoft... deveria ser o access e não o excel.. e mesmo assim o access é ruim demais.

Postado
Em 09/03/2019 às 16:24, DiF disse:

Não...   jamais faça isso,  Não recomende algo que não é.    Excel não é um banco de dados. Pode até servir como um em algumas ocasiões, mas não é o caso aqui. O cara tá desenvolvendo uma aplicação web de vídeos...  Imagina o youtube usando excel....  kkkkkkkkkkkkk

leia o que eu falei, eu falei criar no excel e importar para o banco de dados

  • Moderador
Postado

@Matheus Evandro Rech Eu li e perguntei,  para que fazer isso?  se a pessoa vai cadastrar, vídeos  porque fazer assim?

Melhor fazer direto no sistema com o banco de dados, um a  um.   

Se ele já tivesse os dados cadastrados em um csv tudo bem, era só importar no mysql, mas se ele não tem, e tá criando o sistema, não tem sentido mencionar o excel. enfim Isso não é o pauta do tópico que por sinal, o autor já definiu uma resposta que ele julgou ser correta.  Vamos encerrar o assunto.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...