テーブルからいくつかのカテゴリ名を取得し、htmlspecialchars()を使用して、カテゴリ名に対して取得した文字列を処理しています。問題は、数百のカテゴリ名のうちの1つが不正な終了タグでエコーされていることです。これは、私がエコーしている文字列の簡略化されたバージョンです。
$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>