2011-08-04 44 views
1

我已經嘗試了幾種方法來做到這一點,基於手冊頁,但我似乎無法得到它的權利,不完全是。幫助preg比賽和逃避尖括號!

要找到並取代這一點,從部分快要輸出..

<!--nextpage--><!--tab_title:DAILYMOTION--> 
[dailymotion xkbbmb] 
<!--nextpage--><!--tab_title:DAILYMOTION--> 
[dailymotion xkbbmf] 

有了類似這樣的模式:

[dailymotion + ] + <!--nextpage--><!--tab_title:DAILYMOTION--> 

,然後再消除...

<!--nextpage--><!--tab_title:DAILYMOTION--> 

,使其輸出:

<!--nextpage--><!--tab_title:DAILYMOTION--> 
[dailymotion xkbbmb] 
[dailymotion xkbbmf] 

我發現,尖括號是很難對付的,所以我想知道是否有正則表達式語法,可能只需更換一個字符的左邊 - nextpage-! - 以及擺脫整個事情的權利。有沒有更好的辦法?

+1

什麼是你的正則表達式? – ace

+0

不可能弄清楚你在這裏嘗試的是什麼。 – Layke

+0

「尖括號」在正則表達式中不是特殊字符(至少在您進入更高級的前瞻和後向追蹤之前)。方括號[和]雖然是用來表示像[a-z]這樣的字符組是從a到z的所有字符。 –

回答

-1

像馬克說,在評論中,使用DOM是好,但到底什麼,我給它一個嘗試

$output = preg_replace("~(\[dailymotion [^\]]+\])\s*<!--nextpage--><!--tab_title:DAILYMOTION-->~", "$1", $input); 
+0

謝謝,完美的工作! – Suffice

-1

我認爲你只需要避開尖括號,你就完成了。

preg_replace("#\[dailymotion .+?\](\<!--nextpage--\>\<\!--tab_title\:DAILYMOTION--\>)#s",'',$string); 
+0

這似乎確實會起作用,忘了逃避!,但我忘記提及[dailymotion。+?\]的前臉了。是否有逃避? ''preg_replace(「#\ n \ [dailymotion。+?\](\ <! - next .....) – Suffice

+0

啊,你應該添加's'修飾符(在#之後)白色空間。 – ace