Что такое код domdocument >create_text_node


Что такое код domdocument >create_text_node

DomDocument->create_text_node — создаёт новый текстовый узел.

Описание

object DomDocument->create_text_node (string content)

Эта функция возвращает новый экземпляр класса DomText . Контекстом текста является значение, переданного параметра. Этот узел не будет виден в документе, если он не вставлен с помощью, например, DomNode_append_child() .

return-значением будет false, если возникает ошибка.


Назад Оглавление Вперёд
DomDocument->
create_processing_instruction
Вверх DomDocument->doctype

Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:

Что такое текст Node, его использование?//document.createTextNode()

Итак, я медленно заменяю свой обычный код jQuery на свой собственный javascript, и я столкнулся с документацией document.createTextNode() и связанной с MDN. После прочтения я несколько смущен тем, что такое текст node.

Я понимаю, что он может быть использован для ввода текста внутри div , но я уверен, что там немного больше, чем просто «использовать его для размещения слов внутри элементов». Глядя на это, появляется текст node, который также может ссылаться на текст атрибутов.


Может ли кто-нибудь дать немного больше определения того, что такое текст node и для чего он используется? Существуют ли практические применения для этого, кроме базового, как это?

Весь видимый текст HTML на странице (кроме текста в элементах формы или пользовательских внедренных объектов) находится в текстовых узлах. Страница состоит из нескольких различных типов узлов (здесь вы можете увидеть список различных типов node: https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeType), некоторые из которых могут иметь дочерние узлы, а некоторые из них не могут. Например, div является ELEMENT node, который может содержать дочерние узлы. Эти дочерние узлы могут быть другими узлами ELEMENT или они могут быть узлами TEXT или COMMENT или другими типами узлов.

Когда вы устанавливаете свойство .innerHTML элемента node, он создает соответствующие узлы и делает их дочерними узлами элемента, на который вы устанавливаете свойство innerHTML. Если в настройке innerHTML есть текст, то для его хранения будут созданы текстовые узлы.

DOCUMENT_NODE , ELEMENT_NODE и TEXT_NODE являются наиболее распространенными типами node и находятся на каждой странице с текстом.

В вашем примере кода:

Это создает один текст node и помещает его в созданный div. Он генерирует ту же структуру DOM, что и:

В последнем случае система создает для вас текст node.

В простом javascript-программировании (jQuery имеет тенденцию защищать разработчиков от узлов, которые не относятся к типу ELEMENT_NODE ), вы будете сталкиваться с текстовыми узлами при каждом прохождении дочерних узлов элемента, в котором есть текст. Вам нужно будет проверить .nodeType каждого ребенка, чтобы узнать, является ли это другим элементом или текстом node или другим типом node.

В общем, не так много причин для манипулирования текстовыми узлами напрямую, поскольку вы можете чаще использовать свойство более высокого уровня .innerHTML более просто. Но, чтобы дать вам представление, вот несколько причин, по которым вам, возможно, придется иметь дело непосредственно с текстовыми узлами:

Вы хотите изменить текст, не затрагивая ни один из элементов вокруг него. .innerHTML создает все новые элементы для затронутых элементов, которые убивают любые обработчики событий, которые могли быть установлены на них, но установка .nodeValue в тексте node не приводит к воссозданию элементов.


Если вы хотите найти только текст в документе без какой-либо результирующей разметки HTML и точно знать, где каждая часть текста находится в иерархии DOM, вы можете просто искать все текстовые узлы. Например, если вы выполняли текстовый поиск документа, а затем выделяли найденный текст, вы, вероятно, могли бы напрямую искать текстовые узлы.

Вы хотите отобразить текст без каких-либо угроз безопасности, чтобы он мог содержать другую разметку, которую браузер будет анализировать и интерпретировать, если вы использовали .innerHTML . Таким образом, вы создаете текст node и устанавливаете значение его текста, и браузер не будет интерпретировать в нем какой-либо HTML-код. Современные браузеры также могут использовать свойство .textContent элемента вместо .innerHTML для решения этой проблемы.

FPublisher

Web-технологии: База знаний

Документация PHP

DomDocument->create_text_node

(No version information available, might be only in CVS)

DomDocument->create_text_node — Create new text node

Описание

domtext DomDocument->create_text_node ( string $content )


This function returns a new instance of >DomText . The content of the text is the value of the passed parameter. Этот узел не будет отображаться в документе до тех пор, пока он не будет вставлен, к примеру функцией domnode_append_child().

The return value is FALSE if an error occurred.

DOMDocument php, как получить содержимое блока, с html тегами?

Вообщем необходимо получить со страницы примерно такого содержания:

а именно необходимо получить содержимое блока с идентификатором «firstElement», вместе с HTML тегами. Я использую DOMDocument, но получается вывести только текст.

Подскажите пожалуйста, как правильно получить содержимое?

P.S. вложенных блоков может быть сколько угодно много! и у всех может быть разное содержание!

  • Вопрос задан более трёх лет назад
  • 7466 просмотров

Вот чудо методы для работы с дом-моделью в PHP.
Я не сильно понял вопрос, но благодаря всякой фигне, которая тут написана, мне удалось управлять DOM моделью в PHP.

Вам надо обратить внимание на всякие такие штуки как DOMElement. Потому, что получив DOMDocument веселье не кончается. Теперь вам надо наладить работу с его «Документа» элементами. А значит не помешает так же распочковать структуру всех искомых элементов.
Это можно делать с помощью методов работы с ДОМЕлементами. Такими методами как

public DOMNodeList getElementsByTagName ( string $name )

Но я советую более детально ознакомиться с возможностями работы с ДОМЕлементами, чтоб не вышло путаницы. Найти там то, что вам надо и решить свою задачу.

После публикации вопроса, прошло время и вот что я добился!
Перекурил документацию по php, и сделал вот так:

Тут я добился, что переменная $html — представляет собой ‘string’ со всем содержимым тут все понятно.

Но дальше необходимо вставить $html в другой документ в блок с известным идентификатором, рабочее решение будет с использованием регулярки (написана прям тут) таким:

А вот используя DOMDocument и все такое, я не могу вставить узел, не могу понять (или еще не дочитал) как! Причем пытаюсь использовать DOMNode::appendChild и передаю ей $id из кода выше, но не работает!

Что такое код domdocument >create_text_node


DomDocument->create_text_node — создаёт новый текстовый узел.

Описание

object DomDocument->create_text_node (string content)

Эта функция возвращает новый экземпляр класса DomText . Контекстом текста является значение, переданного параметра. Этот узел не будет виден в документе, если он не вставлен с помощью, например, DomNode_append_child() .

return-значением будет false, если возникает ошибка.

Что такое код domdocument >create_text_node

(no version information, might be only in CVS)

DomDocument->create_text_node — Create new text node

Description object DomDocument->create_text_node ( string content)

This function returns a new instance of >DomText . The content of the text is the value of the passed parameter. This node will not show up in the document unless it is inserted with e.g. domnode_append_child() .


The return value is FALSE if an error occured.

See also domnode_append_child() , domdocument_create_element() , domdocument_create_comment() , domdocument_create_text() , domdocument_create_attribute() , domdocument_create_processing_instruction() , domdocument_create_entity_reference() , and domnode_insert_before() .

Or just use utf8_encode($text), at least if your input is iso-8859-1

all text methods in domxml expect utf-8 encoded strings as input.

Ever tried to insert special characters e.g. German . with this function?
Or to mix normal text with entities?

In my scripts I use a function like this:

$buffer = «»;
for($i = 0; $i append_child($xmldoc->create_text_node($buffer));
$buffer = «»;
$node->append_child($xmldoc->
create_entity_reference($translateSpecial[$value<$i>]));
>
>
$node->append_child($xmldoc->create_text_node($buffer));

PHP DOMDocument createTextNode с пространством имен

Я делаю документ XML для Google покупок и были проблемы с кодировкой описания продукции. Я пробовал различные подходы с str_replace и вылетающих некоторые символы, utf8_encode , iconv и некоторые пользовательские функции, но все ошибки во время кодирования. Тогда я нашел кого — то , кто использовал createTextNode и что , казалось, работать для меня, я не получил никаких ошибок.

Единственная проблема у меня есть сейчас, что я не могу получить createTextNode в нужном пространстве имен (я надеюсь , что я говорю , что правильно).


Это код, который работал, но не на каком-то описании продукта из-за проблемы кодирования:

Это создает правильную линию:

Теперь я хочу , чтобы использовать createTextNode код, но не может получить его работу с нужными тегами. Это работает:

Но это просто ставит содержание в моей основной записи, в то время как она должна быть между описанием тегов.

Как я могу поставить его в описании теги? Или, если вы знаете хороший способ решения проблемы кодирования, используя мой старый код, это тоже хорошо.

Вот весь код, я использую:

Характер узлов узлы не имеют имен. Вот два типа них. Текстовые узлы, которые кодируют XML специальные символы и секции CDATA, которые используют специальный синтаксис. Оба они могут быть использованы для atom:description и atom:summary . Ожидаемое содержание (для Atom Parser) зависит от type атрибута.

По умолчанию это просто text , html означает , что он ожидает , что фрагмент HTML , закодированный в виде текста, xhtml являются дочерними узлами в пространстве имен XHTML.

Вы не должны использовать содержимое аргумента createElement()/createElementNS() или установить свойство $ nodeValue, за исключением , если ваш уверены здесь нет никаких специальных символов в значении (пустая строка, целые числа, . ). Они используют сломанное кодирование. Создание узлов символов с использованием DOMDocument::createTextNode() или DOMDocument::createCDATASection() .

Что такое код domdocument &#62;create_text_node


DomDocument->create_text_node — создаёт новый текстовый узел.

Описание

object DomDocument->create_text_node (string content)

Эта функция возвращает новый экземпляр класса DomText . Контекстом текста является значение, переданного параметра. Этот узел не будет виден в документе, если он не вставлен с помощью, например, DomNode_append_child() .

return-значением будет false, если возникает ошибка.


Назад Оглавление Вперёд
DomDocument->
create_processing_instruction
Вверх DomDocument->doctype

Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:

Поиск и замена ключевых слов ссылкой с использованием DOMDocument

Я искал способ найти определенные ключевые слова, если они находятся внутри «p», «span» или «blockquote», и заменить их ссылкой, используя DOMDocument. Я написал фрагмент Regex, который достигает этого, но я бы предпочел использовать DOMDocument, так как это должно привести к лучшему решению.

Приведенный ниже код имеет две основные проблемы, если я размещу & в $ html .. происходит сбой, потому что & не сбежал, и я не могу найти способ правильно сбежать & ,


Небольшая проблема, не так важная . но если HTML-код недействителен, DOMDocument пытается исправить HTML-код, и я, похоже, не могу этого предотвратить.

Preg_replace использует массив, потому что в конечном итоге он будет динамически загружаться с использованием нескольких ключевых слов.

1 ответ

Проблема с амперсандом appendXML($replaced) с тем, что вы вводите HTML с помощью appendXML($replaced) но не экранируете , > и & текстовые части.

Основная проблема заключается в том, что даже если вы используете DOMDocument, чтобы избежать манипуляции с RegEx, вы все равно манипулируете HTML таким образом в меньшем масштабе и, таким образом, сталкиваетесь с похожими проблемами.

Вот способ избежать всего этого. Я не поддерживал стиль массива замены, чтобы не усложнять его. Я уверен, что вам удастся расширить это с другими типами замен при необходимости:

Таким образом, у вас не будет проблемы с амперсандом.

NB. Я не знаю, как вы можете помешать DOMDocument «исправить» неверный HTML.

Что такое код domdocument &#62;create_text_node

DomDocument->create_text_node — создаёт новый текстовый узел.

Описание

object DomDocument->create_text_node (string content)

Эта функция возвращает новый экземпляр класса DomText . Контекстом текста является значение, переданного параметра. Этот узел не будет виден в документе, если он не вставлен с помощью, например, DomNode_append_child() .

return-значением будет false, если возникает ошибка.

Илон Маск рекомендует:  Что такое код ldap_connect
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL