PHP.mk документација

DOMNode::C14N

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

domnode.c14n.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека domnode.c14n.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
DOMNode::C14N

Референца за `domnode.c14n.php` со подобрена типографија и навигација.

domnode.c14n.php

DOMNode::C14N

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

DOMNode::C14NКанонизирај јазли во стринг

= NULL

public DOMNode::C14N(
         bool $exclusive = false,
         bool $withComments = false,
         ?array $xpath = null,
         ?array $nsPrefixes = null
): string|false

Канонизирај јазли во стринг

Параметри

exclusive

Овозможи ексклузивно парсирање само на јазлите што се совпаѓаат со дадените префикси на xpath или именски простор.

withComments

Задржи коментари во излезот.

xpath

Низа од XPaths за филтрирање на јазлите. Секој запис во оваа низа е асоцијативна низа со:

  • Задолжително query клуч што содржи XPath израз како стринг.
  • Опционален namespaces клуч што содржи низа што ги мапира префиксите на именскиот простор (клучови) на URI-њата на именскиот простор (вредности).
nsPrefixes

Низа од префикси на именски простор за филтрирање на јазлите.

Вратени вредности

Враќа канонизирани јазли како стринг или false Враќа ресурс од покажувач на датотека при успех, или

Примери

Пример #1 Пример со XPath прашање

Овој пример демонстрира напредна употреба на канонизирање и филтрирање на јазлите со XPath прашање.

<?php

$dom
= new DOMDocument();
$dom->loadXML(<<<XML
<root xmlns:food="urn:food">
<!-- redundant namespace declaration will be canonicalized -->
<food:fruit xmlns:food="urn:food">Apple</food:fruit>
<food:fruit>Orange</food:fruit>
<food:fruit>Pear</food:fruit>
<!-- vegetables here -->
<food:vegetable>Lettuce</food:vegetable>
</root>
XML);

echo
$dom->C14N(true, false, [
"query" => ".//f:fruit|.//f:fruit/text()",
"namespaces" => ["f" => "urn:food"],
]);
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

<food:fruit>Apple</food:fruit><food:fruit>Orange</food:fruit><food:fruit>Pear</food:fruit>

Види Исто така

Белешки од корисници 3 белешки

Rijk
12 години пред
When working with (malformed) HTML, you're probably better off using DOMDocument's saveHTML() method instead. C14N() will attempt to make your HTML valid XML, for example by converting <br> to <br></br>.

So instead of:
$html = $Node->C14N();

Use:
$html = $Node->ownerDocument->saveHTML( $Node );
jorda at edpsciences dot org
пред 11 години
C14N() returns an empty string if the node is not included in the document tree:
<?php
$d = new DOMDocument('1.0');
$d->loadXML('<foo></foo>');
$n = $d->createElement('bar');
var_dump($n->C14N());
$d->documentElement->appendChild($n);
var_dump($n->C14N());
?>
output:
string(0) ""
string(11) "<bar></bar>"
lordbaco
пред 10 години
[edit by nielsdos: This has been fixed starting in PHP 8.4]

Good to know:

<< Due to a known issue in XML canonicalization in PHP, processing large metadata files in SimpleSAMLphp takes a big amount of resources, with that amount growing approximately by the square of the number of entities in the metadata set >>
https://simplesamlphp.org/metaprocessing

<< The C14N() function appears to have a runtime that is O(N^2) (or possibly worse?) depending on input size, which means that it becomes very slow as the input grows. For example, an input with around 196000 nodes takes about 290 seconds, while an input with 486000 nodes takes 2200 seconds. >>
https://bugs.php.net/bug.php?id=53655

We had the same issue with a 4.1 MB XML (105k lines). The sample code of ticket  #53655 takes 1h36 minute to canonicalize it!
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.