gpt4 book ai didi

php - XML - 创建元素 - 换行

转载 作者:可可西里 更新时间:2023-11-01 01:02:22 26 4
gpt4 key购买 nike

如何在元素中创建新行?

我愿意:

$currentTrack->appendChild($domtree->createElement('code', '    test1;
test2;
test3;'));

但是它会在每一行的末尾添加 。我怎样才能摆脱它?

最佳答案

\r\n 样式行结尾的回车部分。我认为 DOMDocument 对其进行编码以保存它。如果您检查 XML specification它说如果不编码,它将被规范化为 \n

所以你有不同的选择:

  1. 忽略转义实体,它们在 xml 解析器中解码
  2. 使用 CDATA-Elements,此处未进行规范化,因此 DOMDocument 认为无需转义“\r”。
  3. 确保您保存的文件带有 \n 风格的行尾
  4. 在创建 DOM 之前将行尾规范化为 \n

这里有一些示例源来显示不同的行为:

$text = "test1;\r\ntest2;\r\ntest3;\r\n";

$dom = new DOMDocument('1.0', 'UTF-8');
$root = $dom->appendChild($root = $dom->createElement('root'));

$root->appendChild(
$node = $dom->createElement('code')
);
// text node - CR will get escaped
$node->appendChild($dom->createTextNode($text));

$root->appendChild(
$node = $dom->createElement('code')
);
// cdata - CR will not get escaped
$node->appendChild($dom->createCdataSection($text));

$root->appendChild(
$node = $dom->createElement('code')
);
// text node, CRLF and CR normalized to LF
$node->appendChild(
$dom->createTextNode(
str_replace(array("\r\n", "\r"), "\n", $text)
)
);

$dom->formatOutput = TRUE;
echo $dom->saveXml();

输出:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<code>test1;&#13;
test2;&#13;
test3;&#13;
</code>
<code><![CDATA[test1;
test2;
test3;
]]></code>
<code>test1;
test2;
test3;
</code>
</root>

关于php - XML - 创建元素 - 换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20525741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com