<br/>和highlight_string

时间:2011-11-21 18:01:26

标签: php syntax-highlighting

我想在浏览器上显示代码而不是执行代码,因此我使用highlight_string

<?php highlight_string('function foo(items) {
    for (var i=0; i<items.length; i++) {
        alert(items[i] + "juhu");
    }   // Real Tab.
}')?>

返回,

<code><span style="color: #000000"> function&nbsp;foo(items)&nbsp;{ <br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i=0;&nbsp;i&lt;items.length;&nbsp;i++)&nbsp;{ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(items[i]&nbsp;+&nbsp;"juhu"); <br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Real&nbsp;Tab. <br />}</span> </code>

<code>

但我在新行之后没有<br/> s,

<code><span style="color: #000000">

function&nbsp;foo(items)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i=0;&nbsp;i&lt;items.length;&nbsp;i++)&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(items[i]&nbsp;+&nbsp;"juhu");

&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Real&nbsp;Tab.

}</span>

</code>

有可能吗?

2 个答案:

答案 0 :(得分:1)

你应该能够用正常的换行符(\ r \ n)替换每个<br />标签并输出你的字符串,如下所示:

$data = highlight_string('function foo(items) {
for (var i=0; i<items.length; i++) {
    alert(items[i] + "juhu");
}   // Real Tab.
}',true);
 $data = str_replace('<br />',"\r\n",$data);
 echo '<pre>';
 echo $data;
 echo '</pre>';

答案 1 :(得分:0)

为什么不尝试创建自定义函数。将字符串作为参数,通过'return'分解字符串,在循环中的子字符串上使用highlight_string函数,然后连接所有子字符串以形成所需的字符串