我从表中提取一些类别名称,我使用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'] . '&pl=' . $_SESSION['parm2'] . '">' . $value['CATNAME'] . '</a>';
else
echo '<li><a href="page.php?id='. $value['parm1']. '&pl='. $_SESSION['parm2']. '">'. $value['CATNAME']. '</a>';
还在给我
<li><a href="somepage.php?id=185&pl=10">AR North/a></li>
但如果我将最后一行改为
$value['CATNAME']. '</a>'; to $value['CATNAME']. ' </a>';
我得到了
<li><a href="catview.php?id=185&pl=10">AR North </a></li>
答案 0 :(得分:2)
该字符串可能隐藏有隐藏的删除字符(ASCII 127)。尝试用十六进制回显字符串,看看你是否能找到与众不同的东西。有时这是一个简单的编码问题,并在运行htmlspecialchars之前将字符串编码为utf-8可能会修复它。