Ir para conteúdo

POWERED BY:

Arquivado

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

Clear

[Resolvido] Pegar dados de uma URL com SEO

Recommended Posts

Pessoal,

 

mais uma dúvida me assola...rsss

 

Como faço para pegar os dados de uma URL ATUAL que está no browser, que está convertida pra seo, exemplo:

 

http://www.site.com.br/portal/415-noticias

 

 

No exemplo acima, eu me interessaria pelo "415".

 

E depois disso, qual a melhor forma de receber isso no PHP de forma que essa passagem de informação esteja segura.

 

Tratando o resultado com is_numeric(), seria uma solução?

 

Agradeço desde já aos amigos !!

 

Abraços e Feliz Ano Novo !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente responder mentalmente às perguntas abaixo iniciando-se coma pergunta !O site é seu?"

 

  • Sim
     
    Se estiver usando querystrings, pega pela pelo $_GET mesmo
     
    Se estiver fazendo roteamento de URL, em algum momento do seu script você tem (ou deveria ter pelo menos), todos os componentes da URL armazenados num array.
     
  • Não
     
    • De onde vêm a URL?
       
      • Do browser (barra de endereços)
         
        Só com JavaScript. Cuidado com a dependência do JavaScript
         
      • Programaticamente (analisando um HTML e separando os links, por exemplo)
         
        Se for mais de uma, obviamente há uma iteração. Pegue o valor corrente.
         
        Se for apenas uma, ela estará numa variável. Use-a.

      Seja como for, você terá de analisar a URL:

       

      • A estrutura da URL é fixa? Isto é, sempre será http://www.site.com.br/portal/NUMEROTRAÇOTEXTO
         
        • Sim
           
          Use preg_replace() tendo como padrão: http://www.site.com.br/portal/X-Y
           
          Sendo X números de 0 à 9 OU de 1 à nove seguido de zero à nove em qualquer quantidade.
           
          E Y qualquer sequência alfanumérica, com uma ou mais repetições E traços, afinal, imagino que os espaços são convertidos em traços.
           
        • Não
           
          Também com preg_replace(), remova tudo o que não for número desde que esteja precedido pela barra.
           
          Essa barra vai ajudar a limitar a ER, de forma melhor do que uma borda ( \b ).
           
          Depois de encontrado, use ltrim() pára remover essa barra à esquerda e passe por intval()

Ufa! :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grande Bruno !!

 

Vlw pela explicação !

 

É o seguinte..

 

O site é meu sim, é o CMS do vbulletin, com um plugin para reescrita de url para SEO.

 

Neste caso o $_GET consegue pegar a variavel e o registro, mesmo na forma:

 

A estrutura da URL é fixa? Isto é, sempre será http://www.site.com.br/portal/NUMEROTRAÇOTEXTO

 

E sim, a estrutura da URL é SEMPRE essa .

 

Abraço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca um:

var_dump( $_GET );

e analise o retorno

Compartilhar este post


Link para o post
Compartilhar em outros sites

Feliz Ano Novo Pessoal !!

 

Bom vamos lá...

 

Segue abaixo o resultado da utilização do var_dump:

 

 

Analisando:

 

http://www.site.com.br/portal/723-teste

 

com

 

 

$teste = var_dump( $_GET );

echo $teste;

 

 

Resultou em:

 

array(1) { ["r"]=> string(9) "723-teste" } $teste

 

agora só ta me restando a dificuldade para extrair o "723" dali... me embananei um pouco com o preg_replace() na hora de usar a expressão regular.

 

Abração !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cai no meu último Não da resposta anterior. Porém melhor, basta fazer a primeira etapa dele. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno , eu tentei o seguinte e não tive nenhum resultado =/

 

 

$resultado = preg_replace('/-([-\.0-9a-zA-Z]+)/','',$teste);

=/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tava pensando em algo mais simples:

 

$text = preg_replace( '/\D/', '', $text );

Referência: \D :seta: Não Dígito

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera consegui o que eu estava buscando fazendo assim:

 

URL de teste:

 

http://www.site.com.br/portal/723-teste

 

 

Analisando o resultado do var_dump($_GET):

 

array(1) { ["r"]=> string(9) "723-teste" } $teste

 

ficou conhecida a chave do Array = "r"

 

 

Dai fiz assim:

 

$teste = $_GET['r'] ; // que recebeu o resultado "723-teste"

$resultado = preg_replace('(\-[A-Za-z0-9\]\[\!\"\#\$\%\&\'\(\)\*\+\,\.\/\:\;\<\=\>\?\@\^\_\`\{\|\}\~\- ]+)','',$teste); // teoricamente irá subsituir qq coisa que vier após o "-" (inclusive) por vazio.

echo $resultado; // o que restará apenas o número desejado

 

Parece algo bobinho, mas deixei o código comentado pra que outros que possam ter a mesma dúvida consigam encotnrar esse tópico e ter mais facilidade.

 

A pergunta que não quer calar.... tem algum código regex que subsititua aquele monte de caracter que coloquei ali?

 

Agradeço a todos pelo ajuda ! Em especial ao amigo Bruno pela "grande lição" que me apresentou.

 

Abração !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qualquer coisa ( . ), em qualquer quantidade ( * ), depois do traço.

 

Mas, em termo de performance, essa ER é bem pior do que a que eu apresentei no post #10

 

Um dos ensinamentos que o Aurélio, passa no livro dele (não o dicionário :P ) é que ao construir uma ER você não deve pensar no que ela VAI casar e sim no que ela NÃO VAI casar.

 

Usar um \D deixa bem claro que ela NÃO VAI casar letras, traços, espaços... E se ela não casa nada disso, vai casar apenas com números.

 

E por isso que é mais eficiente. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw Bruno !

 

Eu até tinha pensado nisso.

 

Mas o problema na url é que ela pode conter números depois do que estamos buscando..

 

Exemplo:

 

http://www.site.com.br/portal/723-teste-de-64-bits

 

 

Essa opção estaria correta?

$text = preg_replace( '-(.*)', '', $text );

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.