3 に答える
キスしない理由 (Keep It Simple, Stupid):
echo str_replace(
array('<pre>', '</pre>'),
array('<code>', '</code>'),
$your_html_with_pre_tags
);
マニュアルを見てください。<pre>
タグの変更<code>
は次のように簡単です。
$str = '<pre lang="php">
echo "test";
</pre>
<pre lang="html4strict">
<div id="test">Hello</div>
</pre>';
require_once("simplehtmldom/simple_html_dom.php");
$html = str_get_html($str);
foreach($html->find("pre") as $pre) {
$pre->tag = "code";
$pre->lang = null; // remove lang attribute?
}
echo $html->outertext;
// <code>
// echo "test";
// </code>
// <code>
// <div id="test">Hello</div>
// </code>
"
PS: 入力で,<
および>
文字をエンコードする必要があります。
pre
タグをタグに置き換えるだけで、要素内のcode
ようなブロックレベルの要素がある場合、意味とレンダリングが本質的に変わり、マークアップが無効になりますdiv
。そのため、目標を修正する必要があります。実際に使い続けられるかチェックしてみましょうpre
。そうでない場合は、代わりに、レンダリング<div class=pre>
のように動作させるスタイル シートと一緒に使用します。タグをタグにpre
置き換えるだけでは、構文エラーは発生しません ( のコンテンツ モデルでは、許可されるものは何でも許可されます)。pre
div
div
pre
lang
属性に関しては、lang="php"
正しくありません (HTML 仕様では、属性は標準言語コードを使用して、コンテンツの人間のlang
言語を指定します)、コンピューター言語に関する情報をコーディングするという考えは良いです。後でスタイリングやスクリプト作成に役立つ場合があります。HTML5 ドラフトでは、このような情報は、class="language-php pre"'など、で始まるクラス名を使用してコーディングできると述べています。language-
class="language-php"' (or, when combined with another class name,