0

ブログ用にデータベースからデータを取得しています。<code></code>記事では、説明などを含む文字列があり、タグの間にいくつかのコードがあります。

私はそのコードを強調しようとしました:

<?
echo highlight_string($data["article"]);
?>

記事全体が PHP コードのように見えますが、<code></code>. コードタグ内のコードだけを色付けしたい。

みんなありがとう、私はそれを自分で解決します:)。解決策は底のようなものです。

echo preg_replace('~\<code\>(.*?)\<\/code\>~ise', "highlight_string(stripslashes(stripslashes('\\1')),true);", $data["article"]);

これはまさに私が望む解決策です。

4

3 に答える 3

0

確かなことは言えませんが、質問といくつかのコメントに基づいて、関数highlight()は引数として渡したものを「強調表示」するようです。(おそらく、代わりに css を使用してスタイルを設定する必要があります。以下を参照してください。)

このように呼ぶことhighlight($data["article"]);は、記事全体を強調しているとおっしゃっています。ifhighlight()の仕事は、渡したものを強調表示することです。あなたは記事全体を渡しています。

ハイライトをコードのみで動作させるには、コードのみを渡してください。したがって、記事の途中で、コードのスニペットがある場合は、それhighlight()関数に渡します。これの代わりに、

<p>This is part of a paragraph inside your article, 
and it has <code>a little bit of code</code> inside it.</p>

このようなことをしてください。

<p>This is part of a paragraph inside your article, 
and it has <?php echo highlight('<code>a little bit of code</code>'); ?> inside it.</p>

もちろん、タグに対してグローバルな検索と置換を行い、強調表示スタイルコード タグに埋め込むことになっている可能性もあります。元の質問を読んだだけではわかりません。highlight()<code>

<code></code>代わりに、CSS を使用してすべてのスタイルを設定することを検討してください。<head>と の間のこのようなセクションだけで</head>、すべてのコード要素を強調表示することができます。

<head>
  <title>Title</title>
  <style type="text/css">
    code {background-color:yellow;}
  </style>
</head>

重要な部分は「style」タグの間です。これは、内部スタイルシートでそれを行う方法を示しています。個人的には、外部スタイルシートの方が好きですが、それは追加のファイルを作成することを意味し、この質問には多すぎるようです。

于 2013-04-10T10:50:13.693 に答える
0

コードの強調表示は、Web では非常に一般的な問題であり、プレゼンテーションの問題であるため、PHP ではなく、クライアント側で直接プロセスを実行する方が通常は効率的です。

これには多くの Javascript ライブラリがあります。いくつか挙げてみましょう。

http://softwaremaniacs.org/soft/highlight/en/

https://code.google.com/p/syntaxhighlighter/

http://craig.is/making/rainbows

http://alexgorbatchev.com/SyntaxHighlighter/

于 2013-04-10T10:25:14.580 に答える