如何分隔字符串和代码

时间:2013-04-10 10:20:53

标签: php string blogs highlight

我正在从我的博客数据库中获取一些数据。在文章中我可能有一个带有解释或其他内容的字符串,我在<code></code>标签之间有一些代码。

我尝试用以下内容突出显示该代码:

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

整篇文章看起来像PHP代码,但我无法弄清楚如何突出显示<code></code>中的代码。我想只为代码标签中的代码着色。

谢谢大家,我自己解决了:)。解决方案就像是底部。

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

This is the solution excatly what I want.

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

这是不可能确定的,但根据问题和几条评论,听起来你的函数highlight()将“突出”你传递它作为一个论点。 (你应该用css来设计它。请参见下文。)

你说这样称呼它,highlight($data["article"]);突出了整篇文章。如果highlight()的工作是要突出你传递的任何内容,那是有道理的。你正在传递整篇文章。

要使其突出显示只对代码进行操作,我希望您只将代码传递给它。因此,在文章的中间,只要有代码片段,就将 传递给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>代码上进行全局搜索和替换,并将突出显示样式嵌入其中代码标签。我们无法通过阅读原始问题来判断。

考虑使用css为所有<code></code>设置样式。 <head></head>之间的这样的部分是您真正需要突出显示的所有代码元件。

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

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