Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

spcl

[Resolvido] tags html pelo php

Recommended Posts

spcl

bom dia

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

ex:

coloco a tag toda como abaixo

<meta name="keywords" content="tags de pesquisa"/>			

e "content"

retorna "tags de pesquisa"

ex2:

coloco

<a href="url">texto</a>

e retorna "texto"

como posso fazer isto?

como posso fazer isso

Edited by spcl

Share this post


Link to post
Share on other sites
brunoais

Preciso de mais exemplos ou de uma explicação melhor para ser capaz de te ajudar.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
HappyHippyHippo

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 by yoda
  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
spcl

Preciso de mais exemplos ou de uma explicação melhor para ser capaz de te ajudar.

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

podes fazer facilmente com expressões regulares :

ressions.info/'>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)

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

Edited by spcl

Share this post


Link to post
Share on other sites
HappyHippyHippo

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)

na realidade o exemplo encontrasse aqui : http://www.regular-expressions.info/repeat.html na secção "Watch Out for The Greediness!"

edit : solução

<?php
$content = file_get_contents('http://www.sapo.pt/');
preg_match_all("/<a.+?>.*<\/a>/i", $content, $matches);
print_r($matches);
?>


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Virneto

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!! :confused:

Mas aprendi muita coisa pelo caminho!! ..quer dizer, continuo a aprender...

Tenho planos para torná-la numa aplicação Famel Zundapp com Nitro!!! :cheesygrin:

“Anyway”, mesmo que pretendas fazê-lo em php, acho que se vires o tutorial ficas com umas ideias.


"Que inquieto desejo vos tortura, Seres elementares, força obscura? Em volta de que ideia gravitais?" >> Anthero de Quental

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Linuxando.com | ...

Share this post


Link to post
Share on other sites
HappyHippyHippo

tal como achava tem muitas falhas, como por ex: no www.google.com

retorna isto

estás a dizer que não faz o que pediste ?

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

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


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Virneto

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.

>>> adicionado à lista de tarefas!! :)


"Que inquieto desejo vos tortura, Seres elementares, força obscura? Em volta de que ideia gravitais?" >> Anthero de Quental

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Linuxando.com | ...

Share this post


Link to post
Share on other sites
spcl

Queres retirar informação do google?

nao so do google mas de muitos sites, e o que queria era fazer um sistema para isso

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!! :confused:

Mas aprendi muita coisa pelo caminho!! ..quer dizer, continuo a aprender...

Tenho planos para torná-la numa aplicação Famel Zundapp com Nitro!!! :cheesygrin:

“Anyway”, mesmo que pretendas fazê-lo em php, acho que se vires o tutorial ficas com umas ideias.

bgd

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.

vou dar uma olhada bgd

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

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....

Share this post


Link to post
Share on other sites
pedrotuga

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.

Share this post


Link to post
Share on other sites
spcl

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

Share this post


Link to post
Share on other sites
yoda

Para retirar o texto dos links, há-de ser algo deste género :

$doc = new DomDocument();
@$doc->loadHTMLFile('http://www.google.pt');
$xpath = new DOMXpath($doc);

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 by yoda

Share this post


Link to post
Share on other sites
spcl

Para retirar o texto dos links, há-de ser algo deste género :

$doc = new DomDocument();
@$doc->loadHTMLFile('http://www.google.pt');
$xpath = new DOMXpath($doc);

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>
}
}

eu ja tinha dado uma olhada mas ja agora muito obrigado, vai-me dar muito jeito...

Edited by spcl

Share this post


Link to post
Share on other sites
yoda

Acabei por fazer um teste com um formulário e o DOMXPath. Neste link podem testar uma query sem terem de escrever código.

Exemplo :

URL : http://en.wikipedia.org/wiki/Chicken

Expression : //img

Filter : get attribute

FIlter Value : src

É preciso que entendam a sintaxe das queries para tirarem partido disto (e do DOMXPath).

Share this post


Link to post
Share on other sites
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.

Exemplo :

URL : http://en.wikipedia.org/wiki/Chicken

Expression : //img

Filter : get attribute

FIlter Value : src

É preciso que entendam a sintaxe das queries para tirarem partido disto (e do DOMXPath).

era exatamente o que eu queria.... sem mais nem menos

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.