Rocalbar 0 Denunciar post Postado Junho 11, 2013 Pessoal Estou quebrando a cabeça aqui, vocês podem me ajudar? Seguinte, tenho um script que puxa informações de outro site, o site retorna as informações dentre de um <pre>, mas não consigo individualizar, ou seja, quero quebrar as linhas. Visualizando o retorno temos: <pre> O conteúdo do texto é esse. Dei uma olhada no código fonte e não encontrei nenhuma tag de quebra de linha. São várias linhas que eu quero tratar, mas sem individualizá-las esta difícil. Como posso resolver este problema? </pre> Coloquei todo o conteúdo de retorno na variável $resultado. O script é o seguinte: $texto = explode("<br />", preg_replace('/(\\r)?\\n/i', '<br />', $resultado["texto"])); foreach($texto as $linha) { if(trim($linha) != "") { echo "<p>" . htmlentities($linha) . "</p>\n"; } } Mas não consigo o retorno esperado. Se puderem me dizer o que esta errado, por favor. Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 12, 2013 Por padrão, o navegador ignora quebras de linha e espaços múltiplos quando está processando o código HTML, mas se o conteúdo estiver dentro de um elemento <PRE>, ele é exibido como está, com quebras de linha e múltiplos espaços. ---tanto, ao invés de estar procurando por <br />, você deveria está procurando pelo caractere LINEFEED (\n). Pelo que entendi, você quer cada linha que está em <PRE> como um elemento de um array, certo? $content = "<pre> O conteúdo do texto é esse. Dei uma olhada no código fonte e não encontrei nenhuma tag de quebra de linha. São várias linhas que eu quero tratar, mas sem individualizá-las esta difícil. Como posso resolver este problema? </pre>"; $arr = array_filter( preg_split("/\n/", strip_tags($content)), create_function('$lin', 'return strlen(trim($lin));') ); var_dump($arr); Retorno: array (size=4) 1 => string 'O conteúdo do texto é esse. ' (length=30) 2 => string 'Dei uma olhada no código fonte e não encontrei nenhuma tag de quebra de linha. ' (length=81) 3 => string 'São várias linhas que eu quero tratar, mas sem individualizá-las esta difícil. ' (length=83) 4 => string 'Como posso resolver este problema? ' (length=35) Compartilhar este post Link para o post Compartilhar em outros sites
Rocalbar 0 Denunciar post Postado Junho 12, 2013 Mangakah Obrigado por responder. Seguinte o conteúdo do <pre>, consta na variável $resultado, conforme linha de código abaixo. preg_match_all('/<pre style=\"font-size:14px\">([^`]*?)<\/pre>/', $conteudo, $resultado); Modifiquei um pouco o código que você mandou, para: $arr = array_filter( preg_split("/\n/", strip_tags($resultado)), _____________ESTA É A LINHA 21 create_function('$lin', 'return strlen(trim($lin));') ); var_dump($arr); Mas retornou o seguinte: Warning: strip_tags() expects parameter 1 to be string, array given in C:\xampp\htdocs\whois1\whois.php on line 21array(0) { } O que há de errado? Obrigado, Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 12, 2013 $resultado é um array, e uma string é esperada. Se as entradas do resultado estão nesse array, você deve então colocá-lo em um laço foreach $arr = array(); foreach ($resultado as $content) { $arr[] = array_filter( preg_split("/\n/", strip_tags($content)), create_function('$lin', 'return strlen(trim($lin));') ); } Compartilhar este post Link para o post Compartilhar em outros sites
Rocalbar 0 Denunciar post Postado Junho 12, 2013 mangakah Ainda esta com alguma pipa, rsrsrs Olha o retorno: Warning: strip_tags() expects parameter 1 to be string, array given in C:\xampp\htdocs\whois1\whois.php on line 23Warning: strip_tags() expects parameter 1 to be string, array given in C:\xampp\htdocs\whois1\whois.php on line 23 Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 12, 2013 Então é um array multidimensionaL?? :upset: Poste o conteúdo da variável $resultado: var_export($resultado); Execute e poste aqui. Compartilhar este post Link para o post Compartilhar em outros sites
Rocalbar 0 Denunciar post Postado Junho 12, 2013 mangakah Segue o código completo. <?php $dominio= '033.000.167/0001-01'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://registro.br/cgi-bin/whois/?qr='.$dominio.'lresp'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $conteudo = curl_exec($ch); preg_match_all('/<pre style=\"font-size:14px\">([^`]*?)<\/pre>/', $conteudo, $resultado); /*$content = "<pre> O conteúdo do texto é esse. Dei uma olhada no código fonte e não encontrei nenhuma tag de quebra de linha. São várias linhas que eu quero tratar, mas sem individualizá-las esta difícil. Como posso resolver este problema? </pre>";*/ $arr = array(); foreach ($resultado as $content) { $arr[] = array_filter( preg_split("/\n/", strip_tags($content)), create_function('$lin', 'return strlen(trim($lin));') ); } curl_close($ch); ?> Depois de quebrar as linhas vou tratar as informações para salvar no banco de dados. Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 12, 2013 <?php $dominio= '033.000.167/0001-01'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://registro.br/cgi-bin/whois/?qr='.$dominio.'lresp'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $conteudo = curl_exec($ch); curl_close($ch); preg_match('/<pre style=\"font-size:14px\">([^`]*?)<\/pre>/', $conteudo, $resultado); $arr = array_filter( preg_split("/\n/", strip_tags($resultado[1])), create_function('$lin', 'return strlen(trim($lin));') ); var_dump($arr); Compartilhar este post Link para o post Compartilhar em outros sites
Rocalbar 0 Denunciar post Postado Junho 12, 2013 Kra muito bom, acho que agora foi, mas...... te tanto testar o site esta bloqueando o meu IP, vou realizar mais testes amanha. Kra muito obrigado mesmo, você ajudou muitísssimo. Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 12, 2013 You welcome! :) Se já estiver resolvido, marque o post como "resolvido". Compartilhar este post Link para o post Compartilhar em outros sites
Rocalbar 0 Denunciar post Postado Junho 12, 2013 tentei fazer isso mas o thor não aceita o localhost, tem idéia de como faço para aceitar? Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 12, 2013 Para fazer esses testes, é recomendável usar um proxy para esconder seu IP $dominio= '033.000.167/0001-01'; $proxy = '200.253.158.131'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://registro.br/cgi-bin/whois/?qr='.$dominio.'lresp'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, $proxy); // curl_setopt($ch, CURLOPT_HEADER, true); $conteudo = curl_exec($ch); curl_close($ch); Eu peguei esse proxy (200.253.158.131) nesse site: http://hidemyass.com/proxy-list/search-225521 Lá tem outros que você pode usar... Para usar localhost como proxy, use: $proxy = '127.0.0.1:8888'; PS: Esqueça o que escrevi sobre o Tor, era besteira... Compartilhar este post Link para o post Compartilhar em outros sites
Rocalbar 0 Denunciar post Postado Junho 12, 2013 rsrs blz. deixei o código assim, mas ainda esta bloqueando. <?php $dominio= '033.000.167/0001-01'; $proxy = '147.31.182.137:8080'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://registro.br/cgi-bin/whois/?qr='.$dominio.'lresp'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, $proxy); // curl_setopt($ch, CURLOPT_HEADER, true); $conteudo = curl_exec($ch); curl_close($ch); preg_match('/<pre style=\"font-size:14px\">([^`]*?)<\/pre>/', $conteudo, $resultado); $arr = array_filter( preg_split("/\n/", strip_tags($resultado[1])), create_function('$lin', 'return strlen(trim($lin));') ); var_dump($arr); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Rocalbar 0 Denunciar post Postado Junho 14, 2013 o mangakah é fera, muito obrigado esta funcionando certinho agora!!!! Compartilhar este post Link para o post Compartilhar em outros sites