【问题标题】:PHP - DOM Parser will not return stringPHP - DOM Parser 不会返回字符串
【发布时间】:2014-02-09 01:34:29
【问题描述】:

好的,我有一个 HTML DOM 解析器。它工作......有点。它试图从 div 女巫那里获取文本。

查看主文件

<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html" />

  <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
  </script>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js">
  </script>
  <style>
    #txt_out {
        border: 2px solid #C2C2C2;
        color: #2E2E2E;
        background: #EDEDED;
        width: 97%;
        padding: 5px;
        font-size: 12px;
        font-family: monospace;
        outline: none;
        height: 800px;
        margin: 10px 0;
      }
  </style>
  <title>Get Ranks</title>

  <script type="text/javascript" >   
    $(document).on("click", ".go", function (event) {

        var ID = $(".rank").val();
        console.log("Loading rank: " + ID);
        loadData(ID);


    });


    function loadData(ID) {
        var getRank = ID;

        var dataString = 'getRank=' + getRank;

        $.ajax({
            type: "POST",
            url: "otherTest.php",
            data: dataString,
            cache: false,
            success: function (html) {

                $("#txt_out").append(html);

            }
        });
    }
    </script>
  </head>
  <body>
    <h1>Get Mens Rankings</h1>

    <input value="233" class="rank" />

    <button class="go">Get stats</button>

    <textarea readonly="readonly" id="txt_out"></textarea>

  </body>
</html>

点击“获取统计信息”按钮后,它会(通过 AJAX)调用此页面:

<?php
include_once ('simple_html_dom.php');

$rank = $_POST['getRank'];

$URL = "http://fifa.com/worldranking/rankingtable/gender=m/rank=".$rank."/confederation=25998/page=1/_ranking_table.html";

$html = file_get_html($URL);

$test = trim($html->find('.rnkdate', 0)->innertext);
echo "Date published: " . $test;

?>

它试图从以下 URL 中提取发布日期:http://www.fifa.com/worldranking/rankingtable/gender=m/rank=233/confederation=25998/page=1/_ranking_table.html 其中rank=XXX 是不同月份的不同表。

无论如何,当我这样做时,我会得到以下结果:

问题是它在另一个 DIV 中,因此...我猜它没有显示在 &lt;textarea&gt; 中。那么...我如何进入该 div 并提取文本本身?谢谢。

【问题讨论】:

  • 仅供参考 simple_html_dom 是一个 可怕的 DOM 解析器
  • 对我来说已经足够好了。

标签: javascript php jquery dom


【解决方案1】:

如果您使用的是 http://simplehtmldom.sourceforge.net/ ,那么根据 http://simplehtmldom.sourceforge.net/manual_api.htm ,您似乎应该使用“纯文本”,而不是“内部文本”(因为内部文本似乎是 javascript 开发人员所说的 innerHTML ,而“纯文本”似乎成为 .textContent 的 js 等价物……这个 simplehtmldom 库似乎是由不是网络开发人员的人编写的……无论如何)

$test = trim($html->find('.rnkdate', 0)->plaintext);

【讨论】:

    猜你喜欢
    • 2016-05-07
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    相关资源
    最近更新 更多