Jump to content
Alvaro Pacífico Serpa

Extrair parte de uma string

Recommended Posts

Olá pessoal, tenho uma string que contém algo do tipo:

video = ('meuvideo.mp4')

titulo = ('meutitulo')

tempo = (tempo')

 

Preciso pegar o nome do titulo, ou seja, pegar o que estiver entre titulo = (' e ') no caso o resultado deveria ser meutitulo, o titulo não tem a mesma quantidade de caracteres sempre, alguma idéia de como posso fazer?

Share this post


Link to post
Share on other sites
  1. A linguagem que estás a usar é PHP?
  2. Estás a usar algum sistema de templates?
  3. Porquê os parentesis em torno dos valores das variáveis?

Share this post


Link to post
Share on other sites
5 minutos atrás, wootzor disse:
  1. A linguagem que estás a usar é PHP?
  2. Estás a usar algum sistema de templates?
  3. Porquê os parentesis em torno dos valores das variáveis?

 sim é PHP.

não possui templates.

os parentes estão salvo na string.

$string = "video = ('meuvideo.mp4')titulo = ('meutitulo')tempo = (tempo')";

 

Share this post


Link to post
Share on other sites

Porquê colocar todas as informações numa única string?

Isso irá dificultar bastante a manipulação de dados que pretendas fazer a seguir.

Share this post


Link to post
Share on other sites

Utilizando expressões regulares para extrair os dados delimitados pelos parêntesis:

$string = "video = ('meuvideo.mp4')titulo = ('meutitulo')tempo = ('tempo')";
preg_match_all('/\((.*?)\)/', $string, $matches);
list($video, $titulo, $tempo) = $matches[1];

As variáveis $video, $titulo e $tempo irão conter os dados que pretendes.

Share this post


Link to post
Share on other sites
14 minutos atrás, wootzor disse:

Utilizando expressões regulares para extrair os dados delimitados pelos parêntesis:


$string = "video = ('meuvideo.mp4')titulo = ('meutitulo')tempo = ('tempo')";
preg_match_all('/\((.*?)\)/', $string, $matches);
list($video, $titulo, $tempo) = $matches[1];

As variáveis $video, $titulo e $tempo irão conter os dados que pretendes.

Valeu já me ajudou, mas poderia me explicar melhor essa parte ?

'/\((.*?)\)/'

Share this post


Link to post
Share on other sites

O objectivo é obter os dados que estão dentro dos parêntesis.

A forma mais fácil é colocar a expressão num site como o RegexPal e verificar o significado de cada componente (basta passar por cima de cada elemento identificado com uma cor diferente para obter uma explicação.

 

d7e268G.png

 

Share this post


Link to post
Share on other sites

Considerando que a string sempre tenha o mesmo digamos "layout" segue um exemplo  meio POG sem usar REGEX:

 


$string = "video = ('meuvideo.mp4')titulo = ('meutitulo')tempo = ('tempo')";
//parte que quero : meutitulo
$x = explode("'", $string);
/*
Resultado do var_dump

array (size=7)
  0 => string 'video = (' (length=9)
  1 => string 'meuvideo.mp4' (length=12)
  2 => string ')titulo = (' (length=11)
  3 => string 'meutitulo' (length=9)
  4 => string ')tempo = (' (length=10)
  5 => string 'tempo' (length=5)
  6 => string ')' (length=1)

*/
$titulo = $x[3];

//O que te interessa
echo $titulo;

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By TK_T
      olá sou iniciante consegui fazer um o código de um exercício só que quando eu peço o valor 12ab ele lê como numérica alguém pode me ajudar? 
      Exercício: Leia uma string e diga se a mesma é numérica (na base decimal) ou não.
      Ex.: "123" -> numérica
      "abc" -> não numérica
      "12ab" -> não numérica
      "12.34" -> numérica 
      #include <stdio.h> int main() { char Numero; printf("Digite Algo: "); scanf("%c", &Numero); if(Numero == '1' || Numero == '2' || Numero == '3' || Numero == '4' || Numero == '5' || Numero == '6' || Numero == '7' || Numero == '8' || Numero== '9' || Numero == '0') printf("\tNumérica...\n"); else printf("\tNão Numérica\n"); return 0; }  
    • By clayton.lima2020
      Boa Tarde!
       
      Pessoal estou com um problema para resolver:
       
      Tenho um uma string que é um Nome:  SYLVIA
       
      Eu preciso fazer uma uma busca nessa string achar a letra Y e depois verificar se após a letra Y a próxima letra é Vogal ou Consoante.
       
      No caso do nome SYLVIA a próxima letra é L então retorna Consoante.
       
      Alguém sabe montar esse algoritmo ai?
    • By biakelly
      Oi
       
      Estou fazendo um bot para o telegram, na verdade ele esta funcionando, mas estou com problema de caracteres gigantes pós o ponto. Exemplo quando chamo ele apresenta o número:
       
      0.004152635241526325
       
      Eu queria apresentar assim:
       
      0.004152
       
      Adicionei este trecho:
      (["0_THKJSq4c26vz2tpnkmijgjfy28trvfg"]["price"], 6, ',', '.')
       
      mas não esta funcionando, nào sei se estou fazendo corretamente, segue o trecho que preciso alterar:
       
      if (strpos($message, "/price") === 0) { $price = json_decode(file_get_contents("https://api.justswap.io/v1/tradepairlist"), TRUE)(["0_THKJSq4c26vz2tpnkmijgjfy28trvfg"]["price"], 6, ',', '.'); file_get_contents($path . "/sendmessage?chat_id=" . $chatId . "&text=Preço: " . $price); }  
    • By unset
      Olá, estou com uma pequena dúvida 
       
      Como transformar a data que recebemos com a função date("Y-m-d H:i") em uma string 2021-04-22T00:00 exatamente nesse formato ?
    • By lezão
      Bom dia!
      Estou usando um código q me retorna o mês por extenso, o campo no banco de dados esta com a formatação "Date".
      Mas qnd eu coloco este codigo abaixo:
      <?php setlocale(LC_TIME, 'pt_BR', 'pt_BR.utf-8', 'pt_BR.utf-8', 'portuguese'); date_default_timezone_set('America/Sao_Paulo'); echo strftime('%a, %d de %B de %Y', strtotime('data_comentario')); ?> Não puxa a data correspondente ao do campo do banco.
      Fica retornando assim em todos registros: Qua, 31 de Dezembro de 1969.
       
       
      Alguem pode me ajudar????
       
      Obrigado!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.