phpday 2025 - Call For Papers

DOMNode::getLineNo

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DOMNode::getLineNoDüğümün tanımlandığı satır numarasını döndürür

Açıklama

public DOMNode::getLineNo(): int

Düğümün tanımlandığı satırın numarasını ayrıştırma sırasında döndürür.

Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

Dönen Değerler

Düğümün tanımlandığı satırın numarasını ayrıştırma sırasında döndürür. Düğüm elle oluşturulmuşsa dönen değer 0 olur.

Örnekler

Örnek 1 - DOMNode::getLineNo() örneği

<?php
// Örnek için XML belge
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<node />
</root>
XML;

// DOMDocument örneğini oluştur
$dom = new DOMDocument;

// XML belgeyi yükle
$dom->loadXML($xml);

// 'node' elemanını tanımlandığı satırın numarasını bas
echo '<node> elemanı ', $dom->getElementsByTagName('node')->item(0)->getLineNo()), ' numaralı satırda tanımlanmış';
?>

Yukarıdaki örneğin çıktısı:

<node> elemanı 3 numaralı satırda tanımlanmış

add a note

User Contributed Notes 3 notes

up
4
ruud at vanmelick dot com
11 years ago
The 65535 line number limit is no longer a problem when you use libxml 2.9 or higher, but you have to explicitly enable support for big line numbers:

<?php
define
('XML_PARSE_BIG_LINES', 4194304);
$dom = new DOMDocument;
$dom->loadXML($xml, XML_PARSE_BIG_LINES);
?>
up
1
luke dot NOREPLY at webconnex dot com
13 years ago
This function is buggy. It doesn't always return the correct line number, especially for text elements. As an alternative you can do something like this:

<?php
$text
= $node->ownerDocument->saveXML($node);
$line += substr_count($text, "\n");
?>

You'll want to keep a reference to $line (starting at 0) and add to it as you parse over the document recursively.

In order for this to work you have to tell DOMDocument to preserve white space before loading the document.
up
0
Anonymous
12 years ago
The DOMNode::getLineNo() method doesn't work properly due to a libxml2 bug.

https://bugzilla.gnome.org/show_bug.cgi?id=676026
To Top