0
4

3 に答える 3

2

キスしない理由 (Keep It Simple, Stupid):

echo str_replace(
    array('<pre>', '</pre>'),
    array('<code>', '</code>'),
    $your_html_with_pre_tags
);
于 2012-05-04T12:21:37.650 に答える
2

マニュアルを見てください。<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: 入力で,<および>文字をエンコードする必要があります。

于 2012-05-04T12:22:22.110 に答える
0

preタグをタグに置き換えるだけで、要素内のcodeようなブロックレベルの要素がある場合、意味とレンダリングが本質的に変わり、マークアップが無効になりますdiv。そのため、目標を修正する必要があります。実際に使い続けられるかチェックしてみましょうpre。そうでない場合は、代わりに、レンダリング<div class=pre>のように動作させるスタイル シートと一緒に使用します。タグをタグにpre置き換えるだけでは、構文エラーは発生しません ( のコンテンツ モデルでは、許可されるものは何でも許可されます)。predivdivpre

lang属性に関しては、lang="php"正しくありません (HTML 仕様では、属性は標準言語コードを使用して、コンテンツの人間のlang言語を指定します)、コンピューター言語に関する情報をコーディングするという考えは良いです。後でスタイリングやスクリプト作成に役立つ場合があります。HTML5 ドラフトでは、このような情報は、class="language-php pre"'など、で始まるクラス名を使用してコーディングできると述べています。language-class="language-php"' (or, when combined with another class name,

于 2012-05-04T13:40:17.927 に答える