2012-09-15 79 views
0

我想從字符串INCLUDE中刪除所有引號嵌套引號。使用正則表達式刪除所有報價

它並不適用於嵌套qoutes:

preg_replace("/\[quote(.*?)\](.*?)\[\/quote\]/i","", $text); 

這個工程的類似:

[quote=admin]Welcome to RegExr 0.3b, an intuitive tool for learning, writing, and testing Regular Expressions. Key features include: [/quote] 

但不適用於:

[quote=admin]Welcome to RegExr 0.3b, [quote] an intuitive tool for learning, [/quote] writing, and testing Regular Expressions. Key features include: [/quote] 

想刪除所有qoute塊

回答

1

我認爲你的錯誤只是表達中的問號。

嘗試preg_replace("/\[quote(.*?)\](.*)\[\/quote\]/i","", $text);

你的榜樣張貼在您編輯:

$text = '[quote=admin]Welcome to RegExr 0.3b, [quote] an intuitive tool for learning, [/quote] writing, and testing Regular Expressions. Key features include: [/quote]'; 
$cleared = preg_replace("/\[quote(.*?)\](.*)\[\/quote\]/i","", $text); 

var_dump($cleared); 
// -> string(0) "" 
+0

沒有。 「[quote = admin]歡迎使用RegExr 0.3b,這是一個直觀的學習,編寫和測試正則表達式的工具。主要功能包括:[/ quote]」但不適用於:「[quote = admin]歡迎來到RegExr 0.3b,[quote]一個學習,[/ quote]寫作和測試正則表達式的直觀工具。主要功能包括:[ – m3hdi

+0

]請更清楚你期待的結果 – Thorsten

+0

我只想從字符串中刪除包含嵌套的內容的所有引用塊。 (第一篇文章用例子更新) – m3hdi

-1

爲什麼不是str_replace('"', '', $string);

編輯:這是錯誤的答案。我誤解了這個問題。

+0

不明白這一點。那麼它將如何在bbcode上工作? – m3hdi

+0

@egis不是引號。這個「[quote] foo [/ quote]」。 'str_replace()'不適合這個 –

+0

對不起,誤讀的問題:) – egis

1
/\[quote.*?\](.*?)\[\/quote\]((\s)*(\[\/quote])*)*/gis 

它的工作,但它不是完整的。

請注意,在[/ quote]之後有next [/ quote]和next以及...並且沒有任何其他內容。 此代碼刪除引用像而不是多個報價的報價都:

[quote] ... [quote]...[/quote] ... [quote]...[/quote] ... [/quote]