1

php変数の値をいくつかのhtmlに設定しています。すなわち

$_img = '<a href="some url">hehehehehe</a>';

変数は、brタグの後にhtmlで表示されます。ただし、その中のhtmlは実行されません。むしろ、のように表示されます<a href="some url">hehehehehe</a>。だから、私のコードに問題はありますか?どうすればこれを行うことができますか?

これをHTMLで表示するコードは次のとおりです。

 <?php if ($_item->getComment()): ?> <br/><?php echo $this->escapeHtml($_item->getComment(), array('b','br','strong','i','u')) ?> <?php endif; ?> 
4

3 に答える 3

3
<?php 
    $string = '<a href="http://stackoverflow.com">Hehehe</a>';
    echo $string;
?>

これは問題なく動作します!htmlが「実行」され、リンクが表示されます。

于 2012-10-11T12:46:44.207 に答える
1

あなたのコメントから...

これがそれを表示するコードです<?php if ($_item->getComment()): ?> <br/><?php echo $this->escapeHtml($_item->getComment(), array('b','br','strong','i','u')) ?> <?php endif; ?>

多くの人が予測しているように、値を表示するときに値をエンコードしているように見えます。

関数が正確に何をしているのかわかりませんが$this->escapeHtml、文字列に対してHTMLエンコーディングを行っているように見えます。

その結果、たとえば、任意のタグ<a>がブラウザに送信され、ブラウザは&lt;a&gt;そのように表示され<a>ます。ブラウザはそれをタグとして認識しないため、タグとしては扱いません。

したがって、簡単な答えは次のとおりです。HTMLをエンコードしないでください...

<?php echo $_item->getComment(); ?>
于 2012-10-11T12:59:15.933 に答える
1

変数をエコーし​​ているだけだと思います。

以下のような「htmlspecialchars」メソッドを使用する必要があります。

    <?php
    $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
    echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
    ?>
于 2012-10-11T12:48:38.450 に答える