我正在从我的博客数据库中获取一些数据。在文章中我可能有一个带有解释或其他内容的字符串,我在<code></code>
标签之间有一些代码。
我尝试用以下内容突出显示该代码:
<?
echo highlight_string($data["article"]);
?>
整篇文章看起来像PHP代码,但我无法弄清楚如何突出显示<code></code>
中的代码。我想只为代码标签中的代码着色。
谢谢大家,我自己解决了:)。解决方案就像是底部。
echo preg_replace('~\<code\>(.*?)\<\/code\>~ise', "highlight_string(stripslashes(stripslashes('\\1')),true);", $data["article"]);
答案 0 :(得分:0)
突出显示代码是Web上一个非常常见的问题,因为它是一个表示问题,直接在客户端而不是PHP中执行该过程通常更有效。
有很多Javascript库,请举几个例子:
http://softwaremaniacs.org/soft/highlight/en/
https://code.google.com/p/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>
重要的部分是“风格”标签之间。这说明了如何使用内部样式表来完成此操作。就个人而言,我更喜欢外部样式表,但这意味着要制作一个额外的文件,这对于这个问题似乎太过分了。