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 Rui PG
      Boa tarde, Pessoal"
       
      Sou iniciante em SQL, em uma tabela do nosso BD tempos um campo que possui o registro com as informações do paciente concatenado com uma serie de valores que não precisamos.
      Como eu faço, para montar uma select para extrair desse registro apenas o que está entre aspas?
       
      O meu registro está assim:
      a:28:{i:18;s:13:"Sérgio silva";i:19;s:11:"1199900001";i:20;s:0:"n/i";i:21;s:0:"n/i";i:23;s:15:"Amil One Health";i:24;s:0:"n/i";i:27;s:0:"n/i";i:31;s:1:"2";i:32;s:0:"n/i";i:33;s:1:"2";i:34;s:0:;}
       
      Eu preciso dele assim:
      "Sérgio silva";"1199900001";"n/i";"n/i";"Amil One Health";"n/i";"n/i";"2";"n/i";"2";
       
      Observação, esses monte de valores a:28: ...etc... eles mudam, não são valores fixos, se fossem até usaria o replace, mas são vários valores.
       
      Depois que eu chegar nessa mineração: "Sérgio silva";"1199900001";"n/i";"n/i";"Amil One Health";"n/i";"n/i";"2";"n/i";"2";
      Como eu faço para alocar cada valor em campo campo qualquer, pode ser uma tabela temporária, tipo assim:
       
      |nome           |campo 1        |Campo 2 |Campo 3 |Campo 4               |Campo  5 | .....
      |Sérgio silva|1199900001|n/i              |n/i              |Amil One Health|n/i               |n/i|2|n/i|2| .....
       
      Muito obrigado amigos
       
       
       
       
       
       
    • By RENATA S P BALSANI
      Declarar e atribuir três variáveis, uma com o seu 'nome', outra com o seu 'sobrenome' e outra com a sua 'idade'. Então, declare uma variável com nome resultado e atribua uma string unindo suas variaveis da seguinte forma: " João Silva terá 30 anos". Respeite os espaços!
       
      A Solução não está rodando:
       
      var nome = "Heitor";
      var sobrenome = "Balsani"
      var idade = 4;
      var tempo ="anos";
      var resultado = (nome + " " + sobrenome + " "+ idade + " " + tempo);
      console.log (resultado);
      //  resultado seria: "Heitor Balsani terá 4 anos"
    • By Santos_2015
      tenho array que está sendo preenchido assim:
      $dados = array([0] => "Nome",[1] => "SobreNome",[2] => "null"); queria que ficasse dessa forma:
      $dados = array([0] => "Nome",[1] => "SobreNome",[2] => null); pois estou extraindo os valores do array com array_values  pra colocar em um INSERT, os campos que podem ser null são do tipo date(BD mysql),
      então tenho que retirar as aspas quando o valor vier null , ou no próprio array, ou após o array_values, alguma sugestão?  
    • By Renata88
      Bom dia pessoal,
       
      Alguém sabe se tem alguma biblioteca php para extrair imagem de pdf?
      Nas minhas buscas pelo google, eu só consegui encontrar para extrair texto de pdf.
       
       
       
    • By camargo.2018
      Olá, tudo bem?
      alguém pode me ajudar tipo
      TIPO=Produto&ID=4|TIPO=Produto&ID=4|TIPO=Domain&name=canargo&tls=.com|TIPO=Produto&ID=4 Quero pegar isso e transformar nisso
      for($i = 0; $i <= $quantidade;$i++){ if($produto[tipo][$i] == "Produto"){ $idProduto[$i] = $produto[ID][$i]; }elseif($produto[tipo][$i] == "Domain"){ $NameDomain[$i] = $produto[name][$i]; $TlsDomain[$i] = $produto[tls][$i]; } } alguém pode me ajudar ou se conhece outro método. 
×

Important Information

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