#php #regex #zend-framework #routing
#php #регулярное выражение #zend-framework #маршруты
Вопрос:
Я настраиваю Zend_Route (но это все еще просто регулярное выражение), и я хочу сопоставить URL, подобный
/en/experience/this-is-my-name-and-the-last-is-1-of-id-123456.html
Итак, я хочу захватить
this-is-my-name-and-the-last-is-1-of
и
123456
Я пытался
w{2}/experience/(. )?-(d ).html
но, похоже, это не работает.
Было бы легко, если бы наоборот, например, если бы это был идентификатор имени
/en/experience/123456-this-is-my-name-and-the-last-is-1-of-id.html
Я мог бы использовать
w{2}/experience/(d )-(. ).html
Но это отговорка — так что есть какие-нибудь советы о том, как соответствовать исходному формату?
Комментарии:
1. У меня ваше регулярное выражение работает нормально: rubular.com/r/Ou5N48bV2Q
2. Итак, вы не хотите сопоставить
-id-
бит? Ваш пример этого не показывает
Ответ №1:
Попробуйте это:
/w{2}/experience/(. ?)-(d ).html
Ответ №2:
попробуйте это:
/w{2}/experience/(. )?-(d ).html
zend route внутренне выполняет это:
preg_match('#^/w{2}/experience/(. )?-(d ).html$#i', '/en/experience/this-is-my-name-and-the-last-is-1-of-id-123456.html', $matches);
итак, ваш шаблон совпадает только с косой чертой в начале.