[Resolvido] tags html pelo php - PHP - Portugal-a-Programar
[Resolvido] tags html pelo php
By spcl, January 21, 2013 in PHP
estou com um projeto em maos e ao mesmo tempo com um grande problema.
o que eu tenho de fazer sao duas funcoes uma que depoix de inserir todo o codigo html de um site nela ela tera de retornar-me as tags que eu quero
ao inserir na funao que quero a tag <a> ela retornara todas as tags <a> em um array,
mas com tudo:
<a href='link'>texto</a>
ao inserir que quero <meta /> retorna
<meta name="keywords" content="tags de pesquisa"/>
a segunda funcao serve para retirar o conteudo das tags
coloco a tag toda como abaixo
e "content"
retorna "tags de pesquisa"
e retorna "texto"
Edited January 21, 2013 by spcl
Preciso de mais exemplos ou de uma explicação melhor para ser capaz de te ajudar.
podes fazer facilmente com expressões regulares :
ressions.info/'>http://www.regular-expressions.info/
(se bem me lembro, existe um exemplo na secção Tutorial/Possessive Quantifiers)
(já agora, tenta não usar linguagem de telemóvel : depoix, se foi sem querer (visto que o x é ao lado do s, sem problema)
Edited January 21, 2013 by yoda
o objetivo e que apartir de um codigo html de qualquer plataforma eu consiga retirar todos os <a href="url">nome da pagina</a> por exemplo
e com ele consiga depoix retirar tanto o url como o nome da pagina
isto com todas as <a> que tem no codigo
poderei fazer isto com qualquer tag, a que tambem irei usar ira ser a <meta> e gostaria de retirar tudo dela tambem
ressions.info/'>www.regular-expressions.info/
em todas as minhas pesquisas dizia que era com expressoes regulares mas ja experimentei de varias maneiras e existe sempre algum problema... nao funciona, e para retirar todas as tags nao da, pelo menos eu nao consigo selecionar por exemplo todas as <a> para um array
mas irei ler a documentacao que me enviou e tentar mais uma vez
na realidade o exemplo encontrasse aqui : http://www.regular-expressions.info/repeat.html na secção "Watch Out for The Greediness!"
edit : solução
$content = file_get_contents('http://www.sapo.pt/');
preg_match_all("/<a.+?>.*<\/a>/i", $content, $matches);
na realidade o exemplo encontrasse aqui : ressions.info/repeat.html'>http://www.regular-expressions.info/repeat.html na secção "Watch Out for The Greediness!"
bgd vou tentar
tal como achava tem muitas falhas, como por ex: no www.google.com
retorna isto
Array ( [0] => Array ( [0] => Pesquisar
Defini��es de pesquisa
Hist�rico da Web
e nos dados dados que nao queremos.... vou tentar resolver
Queres retirar informação do google?
Se o que pretendes é uma espécie de WebCrawler e se estiveres interessado em fazê-lo em Python, tens aqui um tutorial que eu segui há algum tempo atrás neste sítio: Udacity
Pessoalmente acho que está bem explicado e deu-me muito gozo de seguir todos os passos!!
Não é que os meus resultados tenham sido extraordinários. O meu produto final foi uma aplicação tipo Famel Zundapp!!
Mas aprendi muita coisa pelo caminho!! ..quer dizer, continuo a aprender...
Tenho planos para torná-la numa aplicação Famel Zundapp com Nitro!!!
"Anyway", mesmo que pretendas fazê-lo em php, acho que se vires o tutorial ficas com umas ideias.
Em PHP é relativamente fácil, dependendo do método que se usa. A minha melhor tentativa em termos de performance e simplicidade de código foi usando a classe nativa do PHP DOMDocument em conjunto com DOMXPath.
estás a dizer que não faz o que pediste ?
o código que te apresentei lista todos os tags <a> e o seu conteúdo. foi o que apresentaste como o pretendido e foi o que apresentei como solução.
se não é isso que tu queres, diz exactamente então o que deveria ser porque senão é impossível te ajudar
>>> adicionado à lista de tarefas!!
nao so do google mas de muitos sites, e o que queria era fazer um sistema para isso
vou dar uma olhada bgd
e +/- o que eu queria o unico problema e que esta a puxar outras tags mesmo estando a pedir uma <a>, e o unico problema, se nao fosse isso....
O yodab já levantou a ponta do véu. O que queres faz. Se usado queries xpath ao dom. O som tem um metodo que se chama getelementsbytagname() qué faz exatamente. O que qures.
mas n e isso que eu queria, eu queria mesmo em php
Para retirar o texto dos links, há-de ser algo deste género :
@$doc->loadHTMLFile('http://www.google.pt');
if ($e = $xpath->query('//a'))
for ($i=0;$i<$e->length;$i++)
$text = $e->item($i)->textContent; # textContent é o conteúdo dentro da tag <a>
Edited January 27, 2013 by yoda
eu ja tinha dado uma olhada mas ja agora muito obrigado, vai-me dar muito jeito...
Edited January 28, 2013 by spcl
Acabei por fazer um teste com um formulário e o DOMXPath. Neste link podem testar uma query sem terem de escrever código.