【问题标题】:Numbers format of parsed table with simple_html_dom使用 simple_html_dom 解析表的数字格式
【发布时间】:2018-09-17 10:10:18
【问题描述】:

我想格式化我正在使用 simple_html_dom 解析的表格单元格的内容。该表包含没有十进制点的单词、整数或数字以及具有 2 个十进制点的浮点值。我希望它们看起来像这样:

before -> after
"abc" --> "abc" (can stay as they are)
"17" --> "17" (can stay as they are)
"24.24" --> "24.2" (rounded)
"24.29" --> "24.3" (rounded)

我已使用此代码格式化浮点值,但在此示例中整数被格式化为 17.1。我试过!is_integer($td),但没有任何改变。

$table = $html->find('table', 2);
$rowData = array();

// Selected Columns
$columnNumbers = [ 5, 6, 7, 8, 9, 10, 11, 12, 13];

// Loop
foreach($table->find('tr') as $row) {
    // initialize array to store the cell data from each row
    $flight = array();
    foreach($row->find('td') as $columnNumber => $cell) {
        // push the cell's text to the array
        if ( in_array( $columnNumber, $columnNumbers ) ) {
            $flight[] = $cell->plaintext;
        }
    }
    foreach($row->find('th') as $columnNumber => $cell) {
        // push the cell's text to the array
        if ( in_array( $columnNumber, $columnNumbers ) ) {
            $flight[] = $cell->plaintext;
        }
    }
    $rowData[] = $flight;
}

foreach ($rowData as $row => $tr) {
    echo '<tr>';
    foreach ($tr as $td)
        if (!is_numeric($td)) {
            echo "<td>$td</td>\n";
        } 
        else {
            echo "<td>".number_format(floatval ($td), 1)."</td>\n";
        }
    }
    echo '</tr>';
}

【问题讨论】:

    标签: php dom html-table numbers format


    【解决方案1】:

    所以,问题出在网上:

    echo "<td>".number_format(floatval ($td), 1)."</td>\n";
    

    number_format( $value, $n ); 将 $n 十进制设置为任何已处理的 $value。 round( $value, $n ); 会将任何 $value 舍入为 $n 小数,仅当它包含超过 $n 个小数时。

    此外,在第二个foreach 循环中,您拥有($rowData as $row =&gt; $tr),而从未使用过$row。 手册说:

    form 将另外分配当前元素的键给 $key 每次迭代的变量

    这意味着每次迭代都是不必要的过程。

    【讨论】:

    • 谢谢。得到它的工作:foreach ($rowData as $row =&gt; $tr) { echo '&lt;tr&gt;'; foreach ($tr as $td) if (is_numeric($td)) {echo "&lt;td&gt;".round ($td,1)."&lt;/td&gt;";} else {echo "&lt;td&gt;$td&lt;/td&gt;";} echo '&lt;/tr&gt;'; }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 2018-07-20
    • 1970-01-01
    • 2017-11-30
    • 2018-01-04
    相关资源
    最近更新 更多