我正在为我的博客从数据库中获取一些数据。在文章中,我可能有一个带有解释或其他内容的字符串,并且我在<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"标签之间。下面演示了如何使用内部样式表。就我个人而言,我更喜欢外部样式表,但这意味着要制作一个额外的文件,这似乎对这个问题来说太多了。