替换&#xD; 在使用SimpleXML打印XML内容之前使用<br>

dan*_*tra 1 php xml replace newline simplexml

我知道这可能是一个非常简单的问题,但我仍然找不到解决方案......好吧,我会简短一点:假设有一个如此结构化的XML文件:

<root><item><text>blah blah blah&#xD;blah blah blah&#xD;blah blah blah&#xD;...</text></item></root>
Run Code Online (Sandbox Code Playgroud)

我的XML显然更复杂,但这并不重要,因为我的问题是:如何&#xD;用例如html <br>标签替换那些?

我正在使用SimpleXML从XML读取数据并尝试使用:

echo str_replace("&#xD;", "<br>", $message->text);
Run Code Online (Sandbox Code Playgroud)

甚至:

echo str_replace("\n", "<br>", $message->text);
Run Code Online (Sandbox Code Playgroud)

但没什么......

我需要使用SimpleXML.

IMS*_*SoP 7

&#xD;表示ASCII"回车"字符(ASCII代码13,D十六进制),有时写入"\r",而不是"换行"字符"\n"(ASCII 10A十六进制).请注意,当向SimpleXML询问节点的字符串内容时((string)$node或者隐含地使用类似的语句echo $node),它会将此"实体"转换为它所代表的实际字符.

根据您的平台(Windows,Linux和MacOS的,等等),标准行结束,通过内置在不断的访问PHP_EOL,将是要么"\n","\r\n""\r".

使用HTML linebreak tags(<br>)替换这些字符的最安全方法是替换任何这些字符,因为您不知道XML数据可能使用的是哪种约定.

PHP有一个内置函数,应该可以为你做这个,称为nl2br().如果你想要一个稍微定制的版本,那么"ngkongs"的文档中会有一条评论,显示如何使用str_replace类似的效果.