使用php preg_match,警告

时间:2011-10-13 08:01:45

标签: php preg-match

regex:^([^\/])/([A-Z])([^\/]+)/([^\/]+)/$

要匹配的字符串:http://127.0.0.1:8008/BeiJing/FangChan/

我使用preg_match()来测试

if (preg_match('/^([^\/])/([A-Z])([^\/]+)/([^\/]+)/$/',"http://127.0.0.1:8008/BeiJing/FangChan/",$match))
    print $match[0];
else
    print 'not match';

但收到警告:preg_match() [function.preg-match]: Unknown modifier '(' 任何人都可以帮我写这个正则表达式,所以它对preg_match函数有效吗?我已经尝试了很多不同的想法,但我真的不太了解正则表达式。

2 个答案:

答案 0 :(得分:3)

/表示示例中模式的开始和结束,无论模式是修饰符之后是什么。

所以这个:

/^([^/])/([A-Z])([^/]+)/([^/]+)/$/

读取为:

/^([^/])/

使用修饰符([A-Z])([^/]+)/([^/]+)/$/

您必须转义所有/或更改开始和结束指示符:

#^([^/])/([A-Z])([^/]+)/([^/]+)/$#

答案 1 :(得分:1)

您需要通过在其前面放置\来逃避/使用。或者将第一个和最后一个/更改为其他类似的内容:

if (preg_match('|^([^/])/([A-Z])([^/]+)/([^/]+)/$|',"http://127.0.0.1:8008/BeiJing/FangChan/",$match)) print $match[0]; else

但这个正则表达式与网址不匹配。