Clear 0 Denunciar post Postado Dezembro 31, 2011 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
MatheusSilva 0 Denunciar post Postado Dezembro 31, 2011 pode tentar tambem (int) ou set_type(); Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Dezembro 31, 2011 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
Clear 0 Denunciar post Postado Dezembro 31, 2011 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
William Bruno 1501 Denunciar post Postado Dezembro 31, 2011 coloca um: var_dump( $_GET ); e analise o retorno Compartilhar este post Link para o post Compartilhar em outros sites
Clear 0 Denunciar post Postado Janeiro 2, 2012 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
Bruno Augusto 417 Denunciar post Postado Janeiro 2, 2012 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
Clear 0 Denunciar post Postado Janeiro 2, 2012 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
Luis Paullo 47 Denunciar post Postado Janeiro 2, 2012 tem .httaccess nesse seu sistema? parse_url Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Janeiro 2, 2012 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
Clear 0 Denunciar post Postado Janeiro 2, 2012 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
Bruno Augusto 417 Denunciar post Postado Janeiro 2, 2012 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
Clear 0 Denunciar post Postado Janeiro 2, 2012 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