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

代码高亮在网络上是一个很常见的问题,由于它是一个演示问题,直接在客户端而不是在 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 回答
0

也许你只是忘记了告诉 php是选择的语言:

<?php
echo highlight($data["article"]);
?> 
于 2013-04-10T10:26:40.730 回答
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>

重要的部分是在“风格”标签之间。这说明了如何使用内部样式表来做到这一点。就个人而言,我更喜欢外部样式表,但这意味着制作一个额外的文件,这对于这个问题来说似乎太多了。

于 2013-04-10T10:50:13.693 回答