htmlspecialchars()问题与删除<来自字符串

时间:2012-05-10 21:04:46

标签: php html

我从表中提取一些类别名称,我使用htmlspecialchars()来处理我为类别名称返回的字符串。问题是,数百个类别名称中的一个正在使用错误的结束标记回显。这是我回应的字符串的简化版本:

$value['CATNAME'] = htmlspecialchars($value['CATNAME']);

echo '<a href="somepage.php?parms=foo">'. $value['CATNAME']. '</a>';

除了糟糕的链接外,所有链接都正确显示。它被回应为

<a href="somepage.php?parms=foo">AR North/a>

如果没有注释掉htmlspecialchars()行,则输出正确的结束标记。我查看了表格中的字符串,也没有任何问题。这看起来像是一个PHP问题,还是我应该在其他地方寻找?我怀疑可能有一些javascript搞乱标签,这是我计划下一步的地方。

感谢。

编辑:更新

我正在尝试的更详细的代码:

        // Convert characters with special HTML significance
        $value['CATNAME'] = utf8_encode($value['CATNAME']);
        $value['CATNAME'] = htmlspecialchars($value['CATNAME']);
        // Print the list item. If the currently selected Id is equal to the category being listed indicated so by marking it

        if ($selectedCat === $value['CATID'])
            echo '<li id="catSel"><a href="page.php?id=' . $value['parm1'] . '&amp;pl=' . $_SESSION['parm2'] . '">' . $value['CATNAME'] . '</a>';
        else
            echo '<li><a href="page.php?id='. $value['parm1']. '&amp;pl='. $_SESSION['parm2']. '">'. $value['CATNAME']. '</a>';

还在给我

<li><a href="somepage.php?id=185&amp;pl=10">AR North/a></li>

但如果我将最后一行改为

$value['CATNAME']. '</a>'; to $value['CATNAME']. ' </a>';

我得到了

<li><a href="catview.php?id=185&amp;pl=10">AR North </a></li>

1 个答案:

答案 0 :(得分:2)

该字符串可能隐藏有隐藏的删除字符(ASCII 127)。尝试用十六进制回显字符串,看看你是否能找到与众不同的东西。有时这是一个简单的编码问题,并在运行htmlspecialchars之前将字符串编码为utf-8可能会修复它。