Ir para conteúdo

Arquivado

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

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?

Compartilhar este post


Link para o post
Compartilhar em outros 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?

Compartilhar este post


Link para o post
Compartilhar em outros 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')";

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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 ?

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

Compartilhar este post


Link para o post
Compartilhar em outros 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

 

Compartilhar este post


Link para o post
Compartilhar em outros 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;

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Leandro T.
      pessoal bom dia alguém poderia me ajudar com o FormValidation?
       
      "nomefuncionario": {
                  validators: {
                      
                  
                    notEmpty: {
                      message: "Nome completo do funcionário é obrigatório."
                    } , <=== este funciona normalmente
                      
                      callback: {  // agora o callback nao consigo fazer funcionar
                              message: 'este nome não é valido',
                              callback: function (input) {
                                  if (input.value = 'algum valor digitado') {
                                      return true
                                  } }},
                      
                      
                      
                  }
    • Por nathanmoreira
      Após diversos cálculos provindos de um código, recebo um número inteiro ao qual não sei o tamanho ao certo (pode variar de 1 pra frente). Quero passar esse número para string e formatar ele de maneira a colocar um ,00 no final e, a cada 3 números antes da virgula, um ponto. Ou seja, deixar o número num formato como: 45.114.477,00
       
      Como fazer? 
    • Por 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; }  
    • Por 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?
    • Por 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); }  
×

Informação importante

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