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

djthyrax

[PHP] Usar o define do Google

18 mensagens neste tópico

Mais um snippet aqui para o povo ;)

function google_define($arg){
if(empty($arg)) return false;
$page = file_get_contents("http://google.com/search?q=define%20".urlencode($arg));
if(preg_match("/width=40 height=30><td valign=top><font size=-1>([^<]*)<br>/", $page, $matches)){
	return "Definition for <b>$arg:</b><br /> {$matches[1]}";
}else{
	return "No definition of <b>$arg</b> found.";
}
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mais um snippet aqui para o povo :D

function google_define($arg){
if(empty($arg)) return false;
$page = file_get_contents("http://google.com/search?q=define%20".urlencode($arg));
if(preg_match("/width=40 height=30><td valign=top><font size=-1>([^<]*)<br>/", $page, $matches)){
	return "Definition for <b>$arg:</b><br /> {$matches[1]}";
}else{
	return "No definition of <b>$arg</b> found.";
}
}

Desculpa a minha ignorância de principiante mas, o que é que faz este código? podes dar uma breve explicação?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpa a minha ignorância de principiante mas, o que é que faz este código? podes dar uma breve explicação?

Obrigado

if(empty($arg)) return false;

se o argumento passado estiver vazio (sem informação que interesse, ou seja, sem letras, números e outros caracteres), a função retorna logo falso.

$page = file_get_contents("http://google.com/search?q=define%20".urlencode($arg));

vai "googlar" define o argumento que passaste passando os caracteres especiais para %FF no urlencode() e atribui o resultado à variável $page

if(preg_match("/width=40 height=30><td valign=top><font size=-1>([^<]*)<br>/", $page, $matches)){

vai tentar encontrar esta pattern na variável $page e devolve os resultados à variável $matches (uma array).

return "Definition for <b>$arg:</b><br /> {$matches[1]}";

Se a pattern foi encontrada, a função retorna aquela string onde $matches[1] vai ser o 2º "match" do preg_match()

}else{

return "No definition of <b>$arg</b> found.";

A pattern não foi encontrada, a função retorna uma string a dizer que não existe nenhuma definição para o argumento passado

:D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:D quando pedi a explicação não era do código em si mas sim qual a finalidade  :P

É para colocar algum campo de pesquisa numa página? e vai fazer a pesquisa no google?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:P quando pedi a explicação não era do código em si mas sim qual a finalidade  :P

É para colocar algum campo de pesquisa numa página? e vai fazer a pesquisa no google?

AH! :D

Isto é uma simples função para ires buscar defines ao google. Exemplo de como usar a função:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<input name="palavra" value="lol" />
<input name="submit" type="submit" value="Define it!" />
<?php
function google_define($arg){
if(empty($arg)) return false;
$page = file_get_contents("http://google.com/search?q=define%20".urlencode($arg));
if(preg_match("/width=40 height=30><td valign=top><font size=-1>([^<]*)<br>/", $page, $matches)){
	return "Definition for <b>$arg:</b><br /> {$matches[1]}";
}else{
	return "No definition of <b>$arg</b> found.";
}
}

echo google_define($_POST['palavra']);
?>
</form>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho uma dúvida, como conseguiste ir buscar essa pattern , copiaste de algum lado ou tem alguma explicaçao lógica ?

Outra coisa, porquê q=define%20

O que é o %20 ?

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho uma dúvida, como conseguiste ir buscar essa pattern , copiaste de algum lado ou tem alguma explicaçao lógica

Que pattern ? Esta -> width=40 height=30><td valign=top><font size=-1>([^<]*)<br>    ?

Se sim... é só ver o código de fonte da página do google e copiar o código...

Outra coisa, porquê q=define%20

O que é o %20 ?

20% é o símbolo ":" (dois pontos) codificado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

%20 é o caractér "espaço" quando url encoded, o dois pontos fica igual, salvo erro.

EDIT: texto mais explícito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

%20 é o caractér "espaço" quando url encoded, o dois pontos fica igual, salvo erro.

EDIT: texto mais explícito.

o caractér "espaço" em url encoded é o  "+" (mais) %20 é caractér ":" (dois pontos) em url encoded

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Kingless estás errado:

: - %3A

(espaço) - %20

sim estava errado...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim kingless, isso mesmo, mas porque esse pedadço de código ??? alguma explicaçao ?

e porque a utilizacao de

return "Definition for <b>$arg:</b><br /> {$matches[1]}";

tipo porque matches[1] e nao matches[0] ou 2 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim kingless, isso mesmo, mas porque esse pedadço de código ??? alguma explicaçao ?

Vai ao google e escreve por exemplo  "define php" vais reparar que na primeira linha vai aparecer a definição de PHP abre o código de fonte dessa página  e procura pelo pattern "width=40 height=30><td valign=top><font size=-1>"  vais reparar que a definição de PHP esta entre esse pattern e foi por isso que ele utilizou esse pattern no código, para ir buscar a definição.

return "Definition for <b>$arg:</b><br /> {$matches[1]}";

tipo porque matches[1] e nao matches[0] ou 2 ?

faz um print_r( $match ); no código e vais perceber porquê :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim kingless, isso mesmo, mas porque esse pedadço de código ??? alguma explicaçao ?

Vai ao google e escreve por exemplo  "define php" vais reparar que na primeira linha vai aparecer a definição de PHP abre o código de fonte dessa página  e procura pelo pattern "width=40 height=30><td valign=top><font size=-1>"  vais reparar que a definição de PHP esta entre esse pattern e foi por isso que ele utilizou esse pattern no código, para ir buscar a definição.

return "Definition for <b>$arg:</b><br /> {$matches[1]}";

tipo porque matches[1] e nao matches[0] ou 2 ?

faz um print_r( $match ); no código e vais perceber porquê :)

Já lhe tinha explicado isso no MSN :D Mas fica aqui o registo para quem não tenha percebido :)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só uma questão, isso funciona?

em vez de %20 não deveria estar %3A?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora