Ir para conteúdo

POWERED BY:

Arquivado

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

Lucas Guima

[Resolvido] Recuperar parte da URL com expressão regular

Recommended Posts

Opa, estou com uma dúvida bastante parecida.

Estou aprendendo ER agora, li um guia e estou praticando.

 

Situação:

Um campo de um formulário recebe uma URL completa e eu quero pegar somente parte dela, que é a ID do tópico.

 

Mas as URLs podem variar:

 

//Somente a ID do tópico aparece
$url_1 = "http://www.algumforumdavida.com/forum.php?action=viewtopic&topicid=12345";
//Aparece a ID e a página e post com definição "last"
$url_2 = "http://www.algumforumdavida.com/forum.php?action=viewtopic&topicid=12345&page=last#last";
//A ID e a página, seguida de "last"
$url_3 = "http://www.algumforumdavida.com/forum.php?action=viewtopic&topicid=12345&page=2#last";
//ID, página e post
$url_4 = "http://www.algumforumdavida.com/forum.php?action=viewtopic&topicid=12345&page=3#1234567";

Eu quero pegar somente o valor de topicid, que pode variar entre 1 e 5 números.

 

Eu fui testando umas coisas mas só consegui depois de 3 ERs. http://forum.imasters.com.br/public/style_emoticons/default/natal_ohmy.gif Imagino que tem como fazer com apenas uma.

 

Eu fiz isso:

<?php
//Retorna a ID até o fim          #n
preg_match_all('/id=(.*)&?/i', $url, $vars);
//Retorna a ID seguida do '&' (nas URLs que tem)
preg_match_all('/^[0-9]+&?/i', $vars[1][0], $id);
//Só então retorna apenas a ID
echo preg_replace('/&/', "", $id[0][0]);
?>

Agradeço desde já. http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites
Perfeito! http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif

Agora só pra eu entender...

 

echo preg_replace( "/.+topicid=([0-9]{1,5}).*/i", "$1", $url[$i] ) . "<br />";

 

O que são esses trechos destacados?

 

Agradecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o "i" é só um modificador para tornar case-insensitive. Nesse caso, pode tirar, pois URL é sempre minúsculo

 

o "$1" é a referência ao grupo da ER (grupo é o que está entre parênteses.). Se houvesse mais grupos, poderia ser referenciado com $2, $3 etc, ou \\1, \\2, \\3 etc

Compartilhar este post


Link para o post
Compartilhar em outros sites

o "i" é só um modificador para tornar case-insensitive. Nesse caso, pode tirar, pois URL é sempre minúsculo

 

o "$1" é a referência ao grupo da ER (grupo é o que está entre parênteses.). Se houvesse mais grupos, poderia ser referenciado com $2, $3 etc, ou \\1, \\2, \\3 etc

 

Cara, valeu mesmo! http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lucas Guima,

 

Seus posts foram separados em um novo tópico.

 

Tópico Original http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://forum.imasters.com.br/index.php?/topic/375613-percorrer-string/

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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