[英]PHP: How to get <br/> working in a simplexml_load_file() var
我通过simplexml_load_file()在php中加载一个xml。
我加载文件:
$xml = simplexml_load_file('flash/datas/datas.xml');
并访问我的内容:
$descText = $xml->aboutModule->chocolaterie->desc
从说明文字是我在$ descText以及registred,但所有的<br/>
文字的消失......所以我的长文本是单行线,不那么好: - /
你知道怎么解决这个问题吗? 是否有一个特殊的traitement做一个$xml
var? 或其他什么?
预先感谢您的帮助!
两种方法使它工作。
不要存放那些<br/>
。 存储真实的实际换行符,例如
<desc>
Line 1.
Line 2.
</desc>
然后使用nl2br()用HTML标记替换换行符。 这假设您的描述通常不包含标记。 如果是,请使用另一个答案中提出的CDATA部分。
$descText = strip_tags($xml->aboutModule->chocolaterie->desc->asXML(), '<br /><br/>');
看看这个 。
有一种方法可以取回HTML标签。 例如:
<?xml version="1.0"?>
<intro>
Welcome to <b>Example.com</b>!
</intro>
这是PHP代码:
<?php
// I use @ so that it doesn't spit out content of my XML in an
// error message if the load fails. The content could be
// passwords so this is just to be safe.
$xml = @simplexml_load_file('content_intro.xml');
if ($xml) {
// asXML() will keep the HTML tags but it will also keep the parent tag <intro> so I strip them out with a str_replace. You could obviously also use a preg_replace if you have lots of tags.
$intro = str_replace(array('<intro>', '</intro>'), '', $xml->asXML());
} else {
$error = "Could not load intro XML file.";
}
?>
如果您可以控制源XML,您可能会发现将描述存储为字符数据(即在CDATA包装器中)更好,而不是将XML与HTML混合。
例如,而不是:
...
<desc>
This is a description<br /> with a break in it
</desc>
...
...做类似的事情:
...
<desc>
<![CDATA[
This is a description<br /> with a break in it
]]>
</desc>
但是如果你没有,那么正如Casidiablo所说,你必须将<desc>
元素的内容作为XML获取。
更好的是,您可以使用以下代码将BR标记替换为新的行标记。
preg_replace("/(\\s*)+/", "\\n", $input);
要么
你可以将描述内容转换为“htmlentities”,然后转回“htmlspecialchars”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.