Jump to content

Recommended Posts

Posted

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.";
}
}

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

  • 4 months later...
Posted

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.";
}
}

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

Obrigado

Posted

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

😄

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

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

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

Posted

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

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

AH! 😄

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>

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

  • 2 weeks later...
Posted

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

Posted

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

Posted

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

EDIT: texto mais explícito.

"Pensa positivo: tudo pode piorar"

Posted

%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

Posted

Kingless estás errado:

: - %3A

(espaço) - %20

Our lives begin to end the day we become silent about things that matter - Martin Luther King

Posted

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 ?

Posted

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ê 🙂

Posted

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 😄 Mas fica aqui o registo para quem não tenha percebido 🙂

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

  • 3 months later...
  • 2 years later...

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
×
×
  • Create New...

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.