我正在从表中提取一些类别名称,并且正在使用 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>