1

テーブルからいくつかのカテゴリ名を取得し、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'] . '&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>
4

1 に答える 1

2

文字列には、非表示の削除文字(ASCII 127)が含まれている場合があります。文字列を16進数でエコーアウトして、通常とは異なる何かを見つけることができるかどうかを確認してください。単純なエンコードの問題である場合があり、htmlspecialcharsを実行する前に文字列をutf-8としてエンコードすると修正される場合があります。

于 2012-05-10T21:17:50.473 に答える