我做了这个正则表达式:\/film\/\d{4}\/+[A-Za-z0-9._%+-]+\/*$
匹配:stuffstuffstuff / film / YYYY / moviename /
例如,我需要匹配: http://www.mymovies.it/film/2013/moliereinbicicletta/
正则表达式是正确的,因为我在Regex Pal和RegExr上进行了测试。
我很确定问题是关于php如何处理正则表达式或者preg-match如何工作,但特别是我确定它有关于使用反斜杠转义斜杠的事情。
这是您可以用来更好地理解问题的代码:
if (preg_match("\/film\/\d{4}\/+[A-Za-z0-9._%+-]+\/*$", "http://www.mymovies.it/film/2013/moliereinbicicletta/")) {
echo "It's working, Good!";
} else {
echo "It's not working :'(";
}
差不多凌晨3点,我想睡觉,但我想尽快完成这个废话,已经有4个小时的尝试和尝试:'(
答案 0 :(得分:3)
您错过了delimiters:
if (preg_match("#\/film\/\d{4}\/+[A-Za-z0-9._%+-]+\/*$#", "http://www.mymovies.it/film/2013/moliereinbicicletta/")) {
^ here ^ and here
如果您不使用/
作为分隔符(非常常见),则无需转义它,因此您可以将其重写为:
if (preg_match("#/film/\d{4}/+[A-Za-z0-9._%+-]+/*$#", "http://www.mymovies.it/film/2013/moliereinbicicletta/")) {
答案 1 :(得分:1)
这有效:
$url = "stuffstuffstuff/film/2013/moviename/"
if (preg_match('%.*?/film/[\d]{4}/moviename/%sim', $url)) {
echo "It's working, Good!";
} else {
echo "It's not working :'(";
}