簡體   English   中英

DOMDocument > setAttribute() > bool 屬性?

[英]DOMDocument > setAttribute() > bool attribute?

我嘗試創建一個可以壓縮 HTML 的 PHP 類,所以我想用 required 替換例如 required="required"。 但是如何通過 DOMDocument 添加 bool 屬性?

代碼: https : //3v4l.org/Ot9th

$doc = new DOMDocument("1.0");
$node = $doc->createElement("input");
$newnode = $doc->appendChild($node);
$newnode->setAttribute("required", '');
var_dump($doc->saveHTML());

結果:

<input required=""></para>

預期的:

<input required></para>

PHP 的DOMDocument創建了一個有效的 XML 結構,並且根據XML 1.0XML 1.1 - 添加空屬性是無效的。

布爾屬性的值應與屬性名稱相同。

這是有效的:

<input required="required"></para>


這是無效的:

<input required></para>

更新

savehtml函數根據dtd驗證內容。 根據xhtml1.0 dtd ,這是作為空屬性有效的屬性列表:

checked
disabled
readonly
multiple
selected
compact
noshade
declare
ismap
nohref
nowrap

任何其他屬性都必須有一個值

好的,我可以通過使用 random_bytes() 和 str_replace() 來解決問題......

代碼: https : //3v4l.org/WiW8m

$rand = md5(random_bytes(16));
$doc = new DOMDocument("1.0");
$node = $doc->createElement("input");
$newnode = $doc->appendChild($node);
$newnode->setAttribute("required", 'delete-this' . $rand);

var_dump(
  str_replace(
    array('="delete-this' . $rand . '"'), 
    array(''), 
    $doc->saveHTML()
  )
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM