![](/img/trans.png)
[英]How to setAttribute of DOMDocument element with special characters?
[英]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.0和XML 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.