Php 使用domDocument计算html表行数

Php 使用domDocument计算html表行数,php,domdocument,Php,Domdocument,我正在使用domDocument计算html表中的行数。这是我的密码 if(isset($_POST['List']) && $_POST['List'] == true) { $data = file_get_contents('File.php'); $dom = new domDocument; @$dom->loadHTML($data); $dom->preserveWhiteSpace = false; $table

我正在使用domDocument计算html表中的行数。这是我的密码

if(isset($_POST['List']) && $_POST['List'] == true)
{
    $data = file_get_contents('File.php');
    $dom = new domDocument;
    @$dom->loadHTML($data);
    $dom->preserveWhiteSpace = false;
    $table = $dom->getElementById('Table');
    $rows = substr_count($table, "<tr>");

    for($x=0;$x<$rows;$x++)
    {

    }
}
我已将代码更改如下

$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$doc = new domDocument();
@$doc->loadHTMLFile($url);
$table = $doc->getElementById('Table');
$rows = $table->getElementsByTagName('tr');
$count = count($rows);
我提交了表格,表格中有2行,但计数是1。 这是$table的内容

tagName:"table"
schemaTypeInfo:null
nodeName:"table" 
nodeValue:"\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tCategoryAMA1A2ABBECCEC1C1EDDED1D1EW\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t"
nodeType:1
parentNode:"(object value omitted)"
childNodes:"(object value omitted)"
firstChild:"(object value omitted)"
lastChild:"(object value omitted)"
previousSibling:"(object value omitted)"
nextSibling:null
attributes:"(object value omitted)"
ownerDocument:"(object value omitted)"
namespaceURI:null
prefix:""
localName:"table"
baseURI:null
textContent:"\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tCategoryAMA1A2ABBECCEC1C1EDDED1D1EW\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t"
tagName:"table"
schemaTypeInfo:null
nodeName:"table" 
nodeValue: "\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tCategoryAMA1A2ABBECCEC1C1EDDED1D1EW\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tDate\r\n\t\t\t\t\t\t"
nodeType:1
parentNode:"(object value omitted)"
childNodes:"(object value omitted)"
firstChild:"(object value omitted)"
lastChild:"(object value omitted)"
previousSibling:"(object value omitted)"
nextSibling:null
attributes:"(object value omitted)"
ownerDocument:"(object value omitted)"
namespaceURI:null
prefix:""
localName:"table"
baseURI:null
textContent: "\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tCategoryAMA1A2ABBECCEC1C1EDDED1D1EW\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tDate\r\n\t\t\t\t\t\t"

loadHTMLFile是否与file_get_内容具有相同的限制,只查看原始html?

选择表后,可以使用
getElementsByTagName
获取其行

$rows = $table->getElementsByTagName('tr');
结果将是一个具有
length
属性的
DOMNodeList
对象,该属性应该是您要查找的计数

echo $rows->length;
看起来您只是使用行计数来设置for循环,这可能不是必需的,因为您可以使用foreach迭代行集

foreach ($rows as $row) {
    // do something with the row
}

一个小问题。最初,该表有一行,带有一个按钮,用户可以在单击时使用JavaScript添加一行。我加了第二排。长度返回1,而不是2。看起来php没有看到JavaScript添加的行,否则长度将是2,不是吗?或者还有其他合乎逻辑的解释吗?不,这是正确的解释。使用
file\u get\u contents
,您只需获取保存在磁盘上的页面的原始未修改版本。如果你想在客户端修改页面后获得页面状态,你必须编写一些JavaScript来收集你需要的信息并发送回来。在js变量中保存修改后的html表数据,并在提交后读取它们。这就是你的意思吗?有点。我的意思是在AJAX请求中使用JS提交修改后的表数据。如果您只是在JS变量中包含数据,然后正常提交表单(没有JS),那么这些变量在服务器端都不可用?很久以前曾经使用过AJAX。