djthyrax Posted November 29, 2006 at 10:50 AM Report #67537 Posted November 29, 2006 at 10:50 AM 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!
pedrotuga Posted November 29, 2006 at 05:38 PM Report #67630 Posted November 29, 2006 at 05:38 PM Porreiro. 😉
JoBlack Posted April 2, 2007 at 10:56 PM Report #91520 Posted April 2, 2007 at 10:56 PM 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
djthyrax Posted April 2, 2007 at 11:06 PM Author Report #91522 Posted April 2, 2007 at 11:06 PM 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!
JoBlack Posted April 2, 2007 at 11:13 PM Report #91524 Posted April 2, 2007 at 11:13 PM 😄 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?
djthyrax Posted April 2, 2007 at 11:21 PM Author Report #91527 Posted April 2, 2007 at 11:21 PM 😛 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!
JoBlack Posted April 2, 2007 at 11:24 PM Report #91528 Posted April 2, 2007 at 11:24 PM Agora entendi, obrigado. 😄
Gurzi Posted April 13, 2007 at 02:13 PM Report #93522 Posted April 13, 2007 at 02:13 PM 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
kingless Posted April 13, 2007 at 04:37 PM Report #93543 Posted April 13, 2007 at 04:37 PM 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
jreis Posted April 13, 2007 at 04:43 PM Report #93545 Posted April 13, 2007 at 04:43 PM %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"
kingless Posted April 13, 2007 at 05:05 PM Report #93553 Posted April 13, 2007 at 05:05 PM %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
skin Posted April 13, 2007 at 05:23 PM Report #93556 Posted April 13, 2007 at 05:23 PM 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
kingless Posted April 13, 2007 at 05:45 PM Report #93563 Posted April 13, 2007 at 05:45 PM Kingless estás errado: : - %3A (espaço) - %20 sim estava errado...
Gurzi Posted April 13, 2007 at 07:03 PM Report #93583 Posted April 13, 2007 at 07:03 PM 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 ?
kingless Posted April 14, 2007 at 01:02 AM Report #93658 Posted April 14, 2007 at 01:02 AM 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ê 🙂
djthyrax Posted April 14, 2007 at 06:36 PM Author Report #93729 Posted April 14, 2007 at 06:36 PM 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!
brunogsimoes Posted July 30, 2007 at 09:12 PM Report #120893 Posted July 30, 2007 at 09:12 PM Só uma questão, isso funciona? em vez de %20 não deveria estar %3A?
scorch Posted September 2, 2009 at 08:57 PM Report #285448 Posted September 2, 2009 at 08:57 PM Adicionado ao Wiki. PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now