如何在php中查找DOM元素的行号?

如何在php中查找DOM元素的行号?,php,dom,Php,Dom,我想检查agetAttribute('src'); 回显“无alt文本”; 回音“.”'; } 否则{ $src=$image->getAttribute('src'); 回显''.'; } } 从上面的代码中,我得到了图像和文本,在图像旁边显示“no alt text”,但我想得到img标记出现的行号。 例如,这里的行号是57 $doc = new DOMDocument(); $doc->loadHTMLFile('http://www.google.com

我想检查a
getAttribute('src');
回显“无alt文本”;
回音“.”
'; } 否则{ $src=$image->getAttribute('src'); 回显''.
'; } }
从上面的代码中,我得到了图像和文本,在图像旁边显示“no alt text”,但我想得到img标记出现的行号。 例如,这里的行号是57

$doc = new DOMDocument();
$doc->loadHTMLFile('http://www.google.com');
$htmlElement = $doc->getElementsByTagName('html');
$tags = $doc->getElementsByTagName('img');
echo $tags->item(0)->getLineNo();
foreach ($tags as $image) {
    // Get sizes of elements via width and height attributes
    $alt = $image->getAttribute('alt');
    if($alt == ""){
       $src = $image->getAttribute('src'); 
       echo "No alt text ";  
      echo '<img src="http://google.com/'.$src.'" alt=""/>'. '<br>';
    }
    else{
       $src = $image->getAttribute('src'); 
         echo '<img src="http://google.com/'.$src.'" alt=""/>'. '<br>';            
    }             
}
56。
57. 

58
HTML没有真正的行号概念,因为它们只是空白

记住这一点,您可能能够计算目标节点之前的所有文本节点中有多少新行。您可以使用DOMXPath执行此操作:

56. <div class="work_item">
57. <p class="pich"><img src="images/works/1.jpg"    alt=""></p>
58. </div>

请注意,我没有测试过这一点,也没有在xpath中使用过轴。

HTML没有真正的行号概念,因为它们只是空白

记住这一点,您可能能够计算目标节点之前的所有文本节点中有多少新行。您可以使用DOMXPath执行此操作:

56. <div class="work_item">
57. <p class="pich"><img src="images/works/1.jpg"    alt=""></p>
58. </div>

请注意,我没有测试过这一点,也没有在xpath中使用过轴。

使用,例如,
$line=$image->getLineNo()
使用,例如,
$line=$image->getLineNo()
我想我已经明白了我想要实现的目标,但不确定这是正确的方法。它正在做这项工作。请留下评论或任何其他想法,我可以如何改进它。 如果您转到以下站点并键入任何URL。它将在网页中生成一份包含可访问性问题的报告。它是一个可访问性检查工具

$xpath = new DOMXPath($doc);
$node = /* your target node */;
$textnodes = $xpath->query("./preceding::*[contains(text(),'\n')]",$node);
$line = 1;
foreach($textnodes as $textnode) $line += substr_count($textnode->textContent,"\n");
// $line is now the line number of the node.
我所要做的就是实现这种布局。下面的代码将生成所提供URL的DOM,并查找没有可选文本的任何图像标记

http://valet.webthing.com/page/


我要感谢每一位特别帮助过“CHWAGSD”和迈克·约翰逊的人。

我想我已经明白了我想要实现的目标,但不确定这是正确的方法。它正在做这项工作。请留下评论或任何其他想法,我可以如何改进它。 如果您转到以下站点并键入任何URL。它将在网页中生成一份包含可访问性问题的报告。它是一个可访问性检查工具

$xpath = new DOMXPath($doc);
$node = /* your target node */;
$textnodes = $xpath->query("./preceding::*[contains(text(),'\n')]",$node);
$line = 1;
foreach($textnodes as $textnode) $line += substr_count($textnode->textContent,"\n");
// $line is now the line number of the node.
我所要做的就是实现这种布局。下面的代码将生成所提供URL的DOM,并查找没有可选文本的任何图像标记

http://valet.webthing.com/page/


我要感谢所有特别帮助“CHWAGSD”和迈克·约翰逊的人。

你为什么需要这个?也许有更好的方法来解决你的问题。哦,对不起,我误解了这个问题。不管报告是什么,你能解释一下你的意思吗。谢谢如果你将
echo
每一行HTML你都可以使用魔法常数:
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
中的alfasin在
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?也许有更好的方法来解决你的问题。哦,对不起,我误解了这个问题。不管报告是什么,你能解释一下你的意思吗。谢谢如果你将
echo
每一行HTML你都可以使用Magic常量:
\uuuuuuuuuuuuuuuuuu
@alfasin
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>中的Magic常量是当前被解释的代码行号,除非OP做了一系列的大量echo。我使用了我发布的代码和URL。我有3张图片,它们的行号都是0,这是不对的。我正在尝试不同的事情,但还没有乐趣:(对不起,没有工作。我使用了我发布的代码和URL。我有3张图片,它们的行号都是0,这是不对的。我正在尝试不同的事情,但还没有乐趣:(