【问题标题】:PHP: How to get <br/> working in a simplexml_load_file() varPHP:如何让 <br/> 在 simplexml_load_file() var 中工作
【发布时间】:2011-02-17 16:25:48
【问题描述】:

我正在通过 simplexml_load_file() 在 php 中加载一个 xml。

我用那个加载文件:

$xml = simplexml_load_file('flash/datas/datas.xml');

然后像这样访问我的内容:

$descText = $xml->aboutModule->chocolaterie->desc

来自 desc 的文本很好地注册在我的 $descText 中,但是所有 &lt;br/&gt; 的文本都消失了...所以我的长文本在一行上,不太好:-/

你知道怎么解决吗? $xml var 有什么特别之处吗?还是别的什么?

提前感谢您的帮助!

【问题讨论】:

标签: php xml simplexml


【解决方案1】:

看看this

有一种方法可以取回 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.";
}
?>

【讨论】:

  • 太棒了!谢谢您的帮助!即使只使用 ->asXML() 命令,它也能完美运行。我惊讶地发现堆栈溢出不是任何都市传说!这么快的答案,非常感谢大家!
【解决方案2】:

如果您可以控制源 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 所说,你必须将 &lt;desc&gt; 元素的内容作为 XML 获取。

【讨论】:

  • 是的,我完全同意将 HTML 与 XML 混合 = bleh。
【解决方案3】:

实现它的两种方法。

正确的

不要存储那些&lt;br/&gt;。存储真正的实际换行符,例如

<desc>
    Line 1.
    Line 2.
</desc>

然后使用 nl2br() 将换行符替换为 HTML 标记。这是假设您的描述通常不包含标记。如果是这样,请使用另一个答案中建议的 CDATA 部分。

其他一个

$descText = strip_tags($xml->aboutModule->chocolaterie->desc->asXML(), '<br /><br/>');

【讨论】:

  • 这个更好!谢谢!
【解决方案4】:

您可以使用以下代码将 BR 标记替换为换行符。

preg_replace("/(\s*)+/", "\n", $input);

您可以将描述内容转换为“htmlentities”,然后再转回“htmlspecialchars”

【讨论】:

    猜你喜欢
    • 2014-07-11
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 2011-09-03
    • 1970-01-01
    • 2012-05-17
    相关资源
    最近更新 更多