2011-08-28 46 views
1

這是我的正則表達式:如何將bb樣式語法與正則表達式匹配?

/^\[y\](.*?)\[\/y\]/ 

這是我的主題:

YouTube的是這裏[Y] 2GJSVlIGmQI [/ Y]

preg_match()不匹配任何從我的主題。

而且還有更好的解決方案來捕獲[y] [/y]裏面的代碼嗎?

謝謝!

+2

您必須從正則表達式中刪除'^'字符。 – Buddy

+1

您應該使用與'/'不同的分隔符,以便您不必轉義它,並使用'/ x'修飾符,以便您有機會閱讀該死的東西:'preg_match('@ \ [y \](。*?)\ [/ y \] @x',......'。 – tchrist

回答

1

您必須從您的正則表達式中刪除^字符。 ^ char匹配字符串的開頭。

$str = 'youtube is here [y]2GJSVlIGmQI[/y]'; 

preg_match('/\[y\](.*?)\[\/y\]/', $str, $arr); 

// 2GJSVlIGmQI 
echo $arr[1]; 
+0

非常感謝您回答我的問題:)非常有幫助! – fenerlitk

0

使用此:/\[y\](.*?)\[\/y\]/

1

你必須在一開始就刪除^,就像這樣:

/\[y\](.*?)\[\/y\]/ 

^做什麼,只有當它是在的開始相匹配的表達字符串。刪除它意味着表達式將匹配字符串中任何位置的模式。

+0

非常感謝! – fenerlitk

+0

@fenerlitk沒問題。不要忘記把這個標記爲正確的答案,如果你看到它是這樣的:-) – Bojangles

+0

我真的很感激你的答案,並認爲這是正確的答案以及巴迪的答案,但我選擇巴迪的答案作爲正確的答案,因爲1。他回答了我的兩個問題,並且2.他的聲譽比你的低,所以我想成爲票價。我希望我能標記兩個答案是正確的。再次感謝。 :) – fenerlitk