2014-04-30 71 views
0

編輯:在我的網站上進行了一些改進後,我終於找到漂亮的谷歌代碼工作......在我的更改沒有工作,但現在...經過一些重要的更改後,我終於喜歡它...正則表達式匹配bbcode標籤內的所有字符串

<link rel="stylesheet" type="text/css" media="all" href="gcp/prettify.css"> 
<script language="javascript" src="gcp/prettify.js" type="text/javascript"></script> 

<body onload="prettyPrint()"> 

$body = preg_replace('#\[code\](.*)\[/code\]#isU', '<div class="code"><span class="xcode"><code class="prettyprint">\1</code></span></div>', $body); 

我附上了截圖...感謝所有的移動我到這個強大的圖書館...我喜歡它!

My Blog with decent highlight library

+0

堆棧溢出用途[谷歌代碼美化](https://code.google.com/p/google用於語法高亮顯示。您可能會發現使用比您嘗試的PHP解決方案更容易。 – AeroX

+1

太棒了!我按照你的建議解決了我的問題! – user3584233

回答

1

更好的功能使用會preg_replace_callback()這個,你就可以匹配的文本傳遞給回調函數重新格式化。

下面是一個示例實現:(這可能需要一些調整,但你應該明白我的意思)

function code_tag_replace($matches) { 
    $ret = '<TABLE WIDTH="100%" CELLSPACING="0" CELLPADDING="10" CLASS="code" BORDER="0"><TR><TD><SPAN CLASS="xcode">'; 
    $ret .= SyntaxHighlight::process($matches[1]); 
    $ret .= '</SPAN></TD></TR></TABLE>'; 
    return $ret; 
} 
$body = preg_replace_callback(
    '#\[code\](.*)\[/code\]#isU', 
    'code_tag_replace', 
    $body 
); 
+0

在php 5.3無效操作碼153/1/8下。在W:\ www \ pst \ conf.php上,第356行關於**函數($ matches){**在php 5.4下**錯誤加載頁面** ... preg_replace_callback讓崩潰apache&php ...在php 5.4下... – user3584233

+0

AeroX你能更好地解釋你的意思嗎?請嘗試給我一些例子,如果可以的話,請... – user3584233

+0

function space2nbsp($ matches){ $ s = $ matches [0]; return str_repeat(' ',strlen($ s)); } $ body = preg_replace_callback('/ \ s {2,} /','space2nbsp',$ body);在我的PHP配置preg_replace_callback必須被調用後,首先必須去的功能...這是從我的PHP文件,我用來發布的另一個例子... – user3584233