【问题标题】:Saving Nodelist and access via js array保存Nodelist并通过js数组访问
【发布时间】:2017-11-28 22:50:00
【问题描述】:

我正在运行一个 php 脚本,该脚本从 url 收集数据并在节点中显示指定的 html 标记。现在我想将此列表保存在我的服务器上并创建一个 js 函数来访问此文件并收集某些数据,例如从第 6 行开始,每三个值都应放入将显示的数组中。

所以我想将从 url 获取的 php 数据与我的 js 脚本连接起来,该脚本当前仅在数组中显示静态值,但它应该从我的 php 列表中获取这些值。

这是我的 php 代码:

$html = file_get_contents("https://www.example.com/link");

$dom = new DOMDocument();
$dom->loadHTML($html);

$nodes = $dom->getElementsByTagName('td');
foreach ($nodes as $node) {
    echo $node->nodeValue."<br>"; // return <td> tag data
}

输出看起来像这样,因为表格只有 3 列

日期
时间
名称
26.4.17
13:45
一些文本
26.4.17
13:45
一些文本

我希望 js 仅在数组中获取今天日期的粗体值。 我的想法是将其保存为 xml 文件并创建 js 访问,但这并没有按我想要的方式工作。有人知道怎么做这个吗 ? 这是HTML表格的结构

<table class="xxx"><col style="width: 20%;"/>
    <col style="width: 20%;"/><col style="width: 60%;"/>
    <thead>
        <tr><td>Date</td><td>Time</td><td>Name</td></tr>
    </thead> 
    <tbody>
        <tr><td>2017-06-26</td><td>03:06:13</td><td>thetextiwant</td></tr>
        <tr><td>2017-06-26</td><td>03:06:13</td><td>thetextiwant</td></tr> 

此表将继续为另外 1000 个值 然后

    </tbody>
</table>

【问题讨论】:

  • 你能告诉我们更多关于你的尝试吗?因为从你的问题来看,我并不完全清楚你到底想要达到什么目的。
  • 好吧,我想要来自外部 url 的数据。我使用 php 脚本获取这些数据。现在我需要对它进行排序,我只得到“sometext”值,然后我想编写一个 javascript 函数来读取这些值并将它们返回到一个数组中。
  • 好的,这对于一个问题来说有点宽泛。所以,我建议我们保留这个关于从 DOM 中提取数据的问题,然后你在 StackOverflow 上提出另一个关于 JavaScript 部分的单独问题。那么告诉我们,你如何确定“sometext”在哪里?它总是每行的第三列吗?或者可以改变吗?如果它更复杂,您能否编辑您的问题并向我们展示实际 HTML 代码的 sn-p,以便我们确定您要提取的确切部分?
  • 是的,好的。不,它很简单。该表每次都有 3 列,我只想要没有标题的第 3 列的值。长度可能会不时变化,但我认为这无关紧要
  • 好的,好的。关于标题,这也是常规的&lt;tr&gt;&lt;td&gt; 结构吗?或者它可能是 `' 或者别的什么?我认为如果您可以发布一个实际表格的示例(但不必包含实际数据)会有所帮助。

标签: javascript php arrays node.js dom


【解决方案1】:

好的,要获取该表结构的每第三列,您可以做一些事情:

$dom = new DOMDocument();
$dom->loadHTML($html);

$tbodyRows = $dom->getElementsByTagName( 'tbody' )
                 ->item( 0 ) // grab first tbody
                 ->getElementsByTagName( 'tr' );

$result = array();
foreach( $tbodyRows as $tbodyRow )
{
    $result[] = $tbodyRow->getElementsByTagName( 'td' )
                         ->item( 2 ) // grab 3rd column
                         ->nodeValue;
}

var_dump( $result );

或(xpath):

$dom = new DOMDocument();
$dom->loadHTML($html);

$xpath = new DOMXPath( $dom );
$thirdColumns = $xpath->query( '//table/tbody/tr/td[3]' );

$result = array();
foreach( $thirdColumns as $thirdColumn )
{
    $result[] = $thirdColumn->nodeValue;
}

var_dump( $result );

【讨论】:

  • 我得走了,今天晚些时候再编辑,如果你还需要通过它的类来识别表格。
  • 好的,它可以工作,现在我将它放在一个非常好的数组中。它看起来像这样。现在可以保存这个文件并通过 javascript 访问它还是应该在这里提出一个新问题?输出如下所示: { [0]=> string(21) "thetextiwant" [1]=> string(22) "thetextiwant" [2]=> string(13) }
  • @erik7 是的,您应该就这些事情提出新问题或使用搜索功能;可能已经有很多关于将数据保存到 PHP 中的文件以及从 PHP 获取 JavaScript 请求数据的问题(也可以搜索标签 ajax)。
猜你喜欢
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 2015-11-30
  • 1970-01-01
相关资源
最近更新 更多