我怎么能分开字符串和代码


How can I separate string and code

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

我试着用:

突出显示代码
<?
echo highlight_string($data["article"]);
?>

和整篇文章看起来像PHP代码,但我不知道如何突出显示<code></code>中的代码。我只想给代码标签中的代码上色。

谢谢大家,我自己解决了:)。

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

这正是我想要的解决方案

高亮显示代码在web上是一个相当普遍的问题,因为它是一个表示问题,通常在客户端直接做这个过程比在PHP中更有效。

有很多Javascript库,让我举几个例子:

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

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

http://craig.is/making/rainbows

http://alexgorbatchev.com/SyntaxHighlighter/

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

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

这是不可能确定的,但根据问题和几个评论,听起来你的函数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>

重要的部分是在"style"标签之间。下面演示了如何使用内部样式表。就我个人而言,我更喜欢外部样式表,但这意味着要制作一个额外的文件,这似乎对这个问题来说太多了。