2017-03-03 29 views
1

好了,所以我有一個報價的設計,它看起來像這樣:巢我的報價跨越

<div id="post_IDHERE"> 
    <span class="quote"> 
     <span class="quote_author">An author:</span><br> 
     <span class="quote_text">Some text quoted</span> 
    </span> 
    Some comment on the quote. 
</div> 

我的PHP代碼打開了[quote]標籤貼到^報價設計。

$data['comment'] = preg_replace("/\[quote=(.*?)\](.*?)\[\/quote\]/", "<span class='quote'><span class='quote_author'>Skriven av $1:</span><br><span class='quote_text'>\"$2\"</span></span><br><br>", $data['comment']); 

而我有兩個問題。一個是我的引用JS函數,但我會從我的PHP(?)問題開始。

基本上,如果$數據[ '註釋']包含:

[quote=test]test[/quote] 
test quote 

它會發布:

blabla

但發帖:

[quote=test][quote=test]test1[/quote]test2[/quote] 
test3 

帖子:

lalala

因此,我認爲我的正則表達式沒有按照我的意願去做?

這裏有一個的jsfiddle顯示嵌套評論: http://jsfiddle.net/n74djvq2/7/

回答

0

你的正則表達式是隻想找[quote=*] * [/quote]模式,所以它首先看到的[/quote]結束。

如果你確實需要嵌套引號的功能,你應該尋找遞歸正則表達式模式,而不僅僅是簡單的版本。

或者如果您覺得困難,可以使用函數而不是正則表達式。

+0

我該怎麼做呢遞歸呢? – prk