特定の文字は HTML で特別な意味を持ち、その意味を保持する場合はHTML エンティティで表す必要があります。
これは、私が持っている限られた知識で、PHP の 2 つの異なる方法で簡単に実行できます。このような:
<?php
$some_code = '<a href="#test">Test</a>';
echo '<pre><code>' . htmlspecialchars( $some_code, ENT_QUOTES ) . '</code></pre>';
?>
またはこの方法:
<?php
$some_code = '<a href="#test">Test</a>';
echo '<pre><code>' . str_replace( array('<', '>', '&', '\'', '"'), array('<', '>', '&', ''', '"'), $some_code ) . '</code></pre>';
?>
(これは、私が何をしようとしているかを示すためのものであり、実際にどのように行っているかではありません。たとえば$some_code
、 は手動ではなく動的に提供されます。)
htmlspecialchars()
overを単純に使用する方がどれほど簡単かを考慮せずstr_replace()
に、私がやろうとしていることに対して、2つのうちどちらがより良い選択でしょうか? (パフォーマンスに関しては、つまり。)
アップデート
わかりました、これにはもっとコンテキストが必要です。これは私が実際にやろうとしていることです:
<?php
$some_code = '<a href="#test">Test</a>';
echo '<pre><code>' . str_replace(
// Replace these special characters
array( '<', '>', '&', '\'', '"', '‘', '’', '“', '”', '/', '[', ']' ),
// With the HTML entities below, respectively
array('<', '>', '&', ''', '"', ''', ''', '"', '"', '"', '/', '[', ']'),
$some_code
) . '</code></pre>';
?>
対:
<?php
$some_code = '<a href="#test">Test</a>';
return '<pre><code>' . str_replace(
array( '‘', '’', '“', '”', '/', '[', ']' ),
array(''', ''', '"', '"', '"', '/', '[', ']'),
htmlspecialchars( $content, ENT_QUOTES )
) . '</code></pre>';
?>