2011-08-04 5 views
1

私はマニュアルページに基づいてこれを行うにはいくつかの方法を試しましたが、私は正しいとは言えません。とにかくそうではありません。preg matchとエスケープアングルブラケットのヘルプ!

これを見つけて交換するには、出力する。これと同様のパターンで

<!--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] 

私がその角括弧が対処することが困難な、これだけの左に1つの文字を置き換える可能性がある正規表現の構文があった場合、私は思っていた発見 - 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のinfrontについて言及するのを忘れていました+ +]。 'preg_replace("#\ n \ [dailymotion。+?\](\ <! - next ..... ' – Suffice

+0

ああ、' sの後ろに 's'修飾子を付けて改行をホワイトスペース。 – ace