帮助html解析

时间:2011-07-14 22:19:17

标签: php string curl html-parsing

我正在构建一个php程序,使用CURL从网站自动获取单词的语音,这就是我所得到的:

<?
$resultado = pegaSinonimos("vagabunda");
if($resultado)
print_r($resultado);
else
echo "Palavra nao encontrada.";
function pegaSinonimos($palavra)
{
    $url = "http://www.dicsin.com.br/content/dicsin_lista.php";
    //$palavra = "localizar";

    $consulta = curl_init();
    curl_setopt($consulta, CURLOPT_HEADER, FALSE);   // Include head as needed
    curl_setopt($consulta, CURLOPT_NOBODY, FALSE);  
    curl_setopt($consulta, CURLOPT_POSTFIELDS, "f_pesq=" . $palavra);
    curl_setopt($consulta, CURLOPT_POST, TRUE);     
    curl_setopt($consulta, CURLOPT_HTTPGET, FALSE); 
    curl_setopt($consulta, CURLOPT_COOKIEJAR, "c:\cookie_consulta.txt");   // Cookie management.
    curl_setopt($consulta, CURLOPT_COOKIEFILE, "c:\cookie_consulta.txt");
    curl_setopt($consulta, CURLOPT_TIMEOUT, 30);    // Timeout
    curl_setopt($consulta, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0");   // Webbot name
    curl_setopt($consulta, CURLOPT_URL, $url);             // Target site
    curl_setopt($consulta, CURLOPT_REFERER, "");            // Referer value
    curl_setopt($consulta, CURLOPT_VERBOSE, FALSE);           // Minimize logs
    curl_setopt($consulta, CURLOPT_SSL_VERIFYPEER, FALSE);    // No certificate
    curl_setopt($consulta, CURLOPT_FOLLOWLOCATION, TRUE);     // Follow redirects
    curl_setopt($consulta, CURLOPT_MAXREDIRS, 4);             // Limit redirections to four
    curl_setopt($consulta, CURLOPT_RETURNTRANSFER, TRUE);     // Return in string
    $res = curl_exec($consulta);
    $res = utf8_decode($res);
    //echo $res;
    $your_array = explode("\n", $res);
    foreach($your_array as $k)
    {
        if(stristr($k, "(Sinônimo)"))
        {
            $k = str_replace("visualizar palavras", "", $k);
            $k = str_replace("Adicionar palavra", "", $k);
            $k = strip_tags($k);
            $k = str_replace("(Sinônimo)", "", $k);
            $k = trim($k);
            //echo $k;
            $array_sinonimos = explode(" ", $k);
            //print_r($array_sinonimos);
        }
    }
    return $array_sinonimos;
}
?>

这是输出:

Array ( [0] => Vagabunda [1] => Piriguete [2] => Promíscuavagabundagem [3] => gandaia [4] => léu [5] => madraçaria [6] => vadiagemvagabundar [7] => mandriar )

问题是,在索引2和6上,单词粘在一起,Promíscua是一个单词,vagabundagem是另一个单词。

这是我想要的部分的来源:

<div class="box_palavra_escolhida"><img src="../img/icone-livro.png" width="41px" height="35px" border="0" alt="imagem icone livro" /><a class="link_escolhida" href="dicsin_edicao.php?id=26708" title="Vagabunda">Vagabunda</a><a class="link_escolhida_sinonimo" href="dicsin_sinonimo_edicao.php?id=26708">Adicionar palavra</a></div><div class="palavras_encontradas"><div class="box_palavras_encontradas"><img src="../css/images/icone_livro_dois.jpg" width="23px" height="21px" border="0" alt="imagem icone livro dois" /><a class="link_encontrada" href="dicsin_edicao.php?id=26709" title="Piriguete">(Sin�nimo) Piriguete</a><a class="link_encontrada_sinonimo" href="dicsin_lista.php?f_pesq=Piriguete">visualizar palavras</a></div><div class="box_palavras_encontradas"><img src="../css/images/icone_livro_dois.jpg" width="23px" height="21px" border="0" alt="imagem icone livro dois" /><a class="link_encontrada" href="dicsin_edicao.php?id=26710" title="Prom�scua">(Sin�nimo) Prom�scua</a><a class="link_encontrada_sinonimo" href="dicsin_lista.php?f_pesq=Prom�scua">visualizar palavras</a></div></div><div class="box_palavra_escolhida"><img src="../img/icone-livro.png" width="41px" height="35px" border="0" alt="imagem icone livro" /><a class="link_escolhida" href="dicsin_edicao.php?id=20569" title="vagabundagem">vagabundagem</a><a class="link_escolhida_sinonimo" href="dicsin_sinonimo_edicao.php?id=20569">Adicionar palavra</a></div><div class="palavras_encontradas"><div class="box_palavras_encontradas"><img src="../css/images/icone_livro_dois.jpg" width="23px" height="21px" border="0" alt="imagem icone livro dois" /><a class="link_encontrada" href="dicsin_edicao.php?id=18390" title="gandaia">(Sin�nimo) gandaia</a><a class="link_encontrada_sinonimo" href="dicsin_lista.php?f_pesq=gandaia">visualizar palavras</a></div><div class="box_palavras_encontradas"><img src="../css/images/icone_livro_dois.jpg" width="23px" height="21px" border="0" alt="imagem icone livro dois" /><a class="link_encontrada" href="dicsin_edicao.php?id=20567" title="l�u">(Sin�nimo) l�u</a><a class="link_encontrada_sinonimo" href="dicsin_lista.php?f_pesq=l�u">visualizar palavras</a></div><div class="box_palavras_encontradas"><img src="../css/images/icone_livro_dois.jpg" width="23px" height="21px" border="0" alt="imagem icone livro dois" /><a class="link_encontrada" href="dicsin_edicao.php?id=20837" title="madra�aria">(Sin�nimo) madra�aria</a><a class="link_encontrada_sinonimo" href="dicsin_lista.php?f_pesq=madra�aria">visualizar palavras</a></div><div class="box_palavras_encontradas"><img src="../css/images/icone_livro_dois.jpg" width="23px" height="21px" border="0" alt="imagem icone livro dois" /><a class="link_encontrada" href="dicsin_edicao.php?id=8714" title="vadiagem">(Sin�nimo) vadiagem</a><a class="link_encontrada_sinonimo" href="dicsin_lista.php?f_pesq=vadiagem">visualizar palavras</a></div></div><div class="box_palavra_escolhida"><img src="../img/icone-livro.png" width="41px" height="35px" border="0" alt="imagem icone livro" /><a class="link_escolhida" href="dicsin_edicao.php?id=21016" title="vagabundar">vagabundar</a><a class="link_escolhida_sinonimo" href="dicsin_sinonimo_edicao.php?id=21016">Adicionar palavra</a></div><div class="palavras_encontradas"><div class="box_palavras_encontradas"><img src="../css/images/icone_livro_dois.jpg" width="23px" height="21px" border="0" alt="imagem icone livro dois" /><a class="link_encontrada" href="dicsin_edicao.php?id=9526" title="mandriar">(Sin�nimo) mandriar</a><a class="link_encontrada_sinonimo" href="dicsin_lista.php?f_pesq=mandriar">visualizar palavras</a></div></div> 
<div class="paginacao_busca"> 

有人能告诉我我做错了什么吗?

感谢

1 个答案:

答案 0 :(得分:1)

你采用错误的方法来解析HTML。不使用字符串函数,而是使用PHP DOM functionsXPath来解析HTML。

相关问题