Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
>
5 minutos atrás, wootzor disse:
-
A linguagem que estás a usar é PHP?
-
Estás a usar algum sistema de templates?
-
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')";
Porquê colocar todas as informações numa única string?
Isso irá dificultar bastante a manipulação de dados que pretendas fazer a seguir.
>
Agora, wootzor disse:
Porquê colocar todas as informações numa única string?
Essas informações não é eu que coloco, elas vem de uma pagina usando file_get_contents
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.>
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 ?
'/\((.*?)\)/'
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.
/applications/core/interface/imageproxy/imageproxy.php?img=https://i.imgur.com/d7e268G.png&key=3de65bb12f4852196301f1051dfe87daa1437818ee61026638aa1747c3810360" />
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;
-
A linguagem que estás a usar é PHP?
-
Estás a usar algum sistema de templates?
-
Porquê os parentesis em torno dos valores das variáveis?