2014-03-28 74 views
0

我花了一段時間來在互聯網搜索,但還是沒能找出爲什麼我的腳本沒有工作:(的preg_match不工作的權利

這裏是我的字符串($標題),我需要檢查

Nanatsu no Taizai – Chương 071: Tồn tại trong bóng đêm 

而且,我用正則表達式的名單,但始終返回false

"/^([a-z\ ]+)[\-]{1,}/i" 

"/^([a-z\ ]+)[\ ]{0,1}[\-]{1,}/i" 

"/^([a-z\ ]+)[\-]{1,}/ui" 

我使用的代碼是

preg_match($regex,$title,$matches) 

請幫幫我。先謝謝你。

+1

你試圖匹配什麼值? –

+0

謝謝你的回覆。我試圖匹配「Nanatsu no Taizai - 」 – SmileLuu

+0

問題與您的模式是因爲您只匹配小寫字母'a-z'它應該是'a-zA-Z' – MSadura

回答

0

或許這對你的作品

$t = "Nanatsu no Taizai - Chương 071: Tồn tại trong bóng đêm"; 

preg_match('/(.*) - (.* [0-9]{1,}:) (.*)/i', $t, $matches); 

print_r($matches); 

結果

Array 
(
    [0] => Nanatsu no Taizai - Chương 071: Tồn tại trong bóng đêm 
    [1] => Nanatsu no Taizai 
    [2] => Chương 071: 
    [3] => Tồn tại trong bóng đêm 
) 

更好?

+0

我在我的代碼中發現錯誤後,使用了這個正則表達式來測試。我用這個正則表達式來匹配我網站上某些標題的某些情況,所以我真的不能在你的回答中使用正則表達式,因爲它也會匹配其他標題。例如:「Yankee-kun-Mega-chan」 – SmileLuu

+0

''我'標誌在'(。*)\ - '模式中沒有任何用處......另外,如果'-'字符是分隔符,那麼如何使用'爆炸「或」strtok「? –

+0

我更新了我的代碼,這應該比使用RegEx更好。 – neonoxGER

4

如果你只是想提取一切,直到第一個-,最好的方法是不要使用正則表達式。 strtoktrim,可能對您的理想:

$result = trim(strtok($title, '-')); 

如果你想要的結果,包括了-那麼,你可以這樣做:

$result = strtok($title, '-') . '-'; 
+0

+1 Simpler總是更好 –

+0

是的,這是一種好方法,也非常感謝您的回覆。但是這個正則表達式用於測試。我的真實表情是用來匹配「Nanatsu no Taizai-Chương071」和transfrom到「[Nanatsu no taizai]Chương071」並且還將「Yankee-kun與Mega-chan - Bàihọc458」相匹配以轉換爲「[Yankee- kun to Mega-chan]Bàihọc458「。你能幫我找到一個方法,並請修剪嗎? – SmileLuu

+0

@Paulpro:我雖然關於strrpos之前,但我結束了preg_match。因爲我的帖子標題可能是「Gintama - Chương458:Bíẩn - giấusaumànđêm」 – SmileLuu