Intereting Posts
Как предотвратить множественные вставки при отправке формы в PHP? Как использовать PHP внутри файла css Bootstrap: порядок изменения столбцов полной ширины на мобильных устройствах jsPdf с использованием html2canvas.js для экспорта pdf из html не работает для больших данных Случайное генерирование цвета с использованием PHP Неизвестные пробелы, появляющиеся внутри без заполнения или полей Как работают предварительные загрузчики изображений? Невозможно получить вертикальную полосу прокрутки с помощью justify-content: flex-end Высота гибкого контейнера не работает должным образом в Safari maxPostSize применяется к загрузке файлов multipart / form-data высота: 100% не работает в Internet Explorer Прокрутка div с помощью jQuery window.getSelection () дает мне выделенный текст, но я хочу, чтобы HTML Скрыть текстовое поле, мигающий курсор Проблемы с позиционированием в Firefox? позиция: относительная для отображения: элемент таблицы

Использование PHP для получения элемента DOM

Я изо всех сил пытаюсь понять, как использовать объект DOMElement в PHP. Я нашел этот код, но я не уверен, что он применим ко мне:

$dom = new DOMDocument(); $dom->loadHTML("index.php"); $div = $dom->getElementsByTagName('div'); foreach ($div->attributes as $attr) { $name = $attr->nodeName; $value = $attr->nodeValue; echo "Attribute '$name' :: '$value'
"; }

В основном мне нужно искать DOM для element с определенным id , после чего мне нужно извлечь нестандартный attribute (то есть тот, который я составил и надел с JS), поэтому я могу видеть значение этого , Причина в том, что мне нужна одна часть из $_GET и одна часть, которая находится в HTML, основанная на переадресации. Если бы кто-то мог просто объяснить, как я использую DOMDocument для этой цели, это было бы полезно. Я действительно борюсь за понимание того, что происходит и как правильно его реализовать, потому что я явно не делаю это правильно.

EDIT (Где я нахожусь на основе комментария):

Это мои коды кода 4-26 для справки:

 
load("index.php"); $divs = $dom->getElementsByTagName('div'); foreach ($divs as $div) { foreach ($div->attributes as $attr) { $name = $attr->nodeName; $value = $attr->nodeValue; echo "Attribute '$name' :: '$value'
"; } } $div = $dom->getElementById('currentLocation'); $attr = $div->getAttribute('srckey'); echo "

{$attr}"; ?>

Вот сообщение об ошибке, которое я получаю:

 Warning: DOMDocument::load() [domdocument.load]: Extra content at the end of the document in ../public_html/index.php, line: 26 in ../public_html/index.php on line 10 Fatal error: Call to a member function getAttribute() on a non-object in ../public_html/index.php on line 21 

Solutions Collecting From Web of "Использование PHP для получения элемента DOM"

getElementsByTagName возвращает вам список элементов, поэтому сначала вам нужно выполнить цикл через элементы, а затем через их атрибуты.

 $divs = $dom->getElementsByTagName('div'); foreach ($divs as $div) { foreach ($div->attributes as $attr) { $name = $attr->nodeName; $value = $attr->nodeValue; echo "Attribute '$name' :: '$value'
"; } }

В вашем случае вы сказали, что вам нужен конкретный идентификатор. Предполагается, что они уникальны, поэтому для этого вы можете использовать (note, getElementById может не работать, если вы сначала не $dom->validate() ):

 $div = $dom->getElementById('divID'); 

Затем, чтобы получить свой атрибут:

 $attr = $div->getAttribute('customAttr'); 

EDIT : $dom->loadHTML просто считывает содержимое файла, он не выполняет их. index.php не будет работать таким образом. Возможно, вам придется сделать что-то вроде:

 $dom->loadHTML(file_get_contents('http://localhost/index.php')) 

У вас не будет доступа к HTML, если redirect осуществляется с внешнего сервера. Позвольте мне сказать так: DOM не существует в момент, когда вы пытаетесь его разобрать. Что вы можете сделать, так это передать текст в парсер DOM, а затем манипулировать элементами таким образом. Или лучшим способом было бы добавить его в качестве другой переменной GET.

EDIT: Вы также знаете, что клиент может изменить HTML и передать все, что захочет? (Использование инструмента, такого как Firebug)