2014-03-28 106 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