【问题标题】:Escaping xml in php output在 php 输出中转义 xml
【发布时间】:2012-12-16 06:11:51
【问题描述】:

我正在回显 mysql 的一些输出。我无法控制它,因为它是一个日志文件,但是有一个特定的日志在显示时会弄乱我的 html。

这是我从日志中提取的一个 sn-p:

a következő helyen: System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)<br />
a következő helyen: System.Number.ParseDecimal(String value, NumberStyles options, NumberFormatInfo numfmt)<br />
Parsing hand: <br />
<?xml version="1.0" encoding="utf-16"?><br />
<HandDetails SiteName="Poker

当我在表格中显示它时,一切都搞砸了。我尝试使用hmtlentitieshtmlspecialchars,但它们都打印隐藏的&lt;br /&gt; 标签和&lt;br /&gt; 不起作用,因此不显示换行符。任何想法最好的方法是什么?

我正在考虑寻找开头和结尾&lt;&gt;,然后将它们替换为[],但我不确定是否会有副作用,有时我没有结尾,因为我取一个600行左右的sn-p代码,所以可以随时截断

我不介意更改数据,它不必按原样显示 100%(FWIW,它毫无问题地插入数据库;当我回显它时,问题就出现了)。

//更多信息的新编辑

好的,所以我查看了源代码,它显示了这一点:

<td>   at System.Windows.Interop.HwndTarget.UpdateWindowSettings(Boolean enableRenderTarget, Nullable`1 channelSet)&lt;br /&gt;
   at System.Windows.Interop.HwndTarget.UpdateWindowSettings(Boolean enableRenderTarget)&lt;br /&gt;
   at System.Windows.Interop.HwndTarget.UpdateWindowPos(IntPtr lParam)&lt;br /&gt;
   at System.Windows.Interop.HwndTarget.HandleMessage(WindowMessage msg, IntPtr wparam, IntPtr lparam)&lt;br /&gt;
   at System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wP</td>

我的输出代码非常简单:

$result1 = mysql_query($feedback_query_first);

    while ($row1 = mysql_fetch_array($result1))
    {
    $first_date = $row1['snippet_date'];
    $snippet_text_pre = $row1['snippet_text'];
    $snippet_text = htmlspecialchars($snippet_text_pre);
    }

    echo '<td>'. $snippet_text.'</td>';

如果我删除 htmlspecialchars 那么我得到了 xml 的原始问题,但格式很好,观察到换行符等,当我把它留在那里时,我得到
作为文本插入,没有换行符? ???

【问题讨论】:

    标签: php html-entities htmlspecialchars


    【解决方案1】:

    htmlspecialchars 不会“打印隐藏的&lt;br /&gt; 标签”。仔细查看生成的 HTML(浏览器中的“查看源代码”),看看究竟是什么导致了问题。

    【讨论】:

    • 感谢我打印了源代码的样子,但不确定它是否是 hmtlspecialchars,但只有当我添加它时才会发生
    • 好吧,我无法解决这个问题,但我的解决方法是 $sn-p_text = str_replace("<br />", "
      ",$sn-p_text_pre1);
    • 所以您的意思是您的原始 XML 已损坏并且其中包含随机标签和实际 HTML,您只想保留这些标签。我不会完全称 br 元素显示为“不可见”文本,这让我很反感。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多