помочь с регулярным выражением - PullRequest
0 голосов
/ 27 февраля 2010

Я хочу получить следующие URL с регулярным выражением:

 HREF="http://www.getty.edu/vow/TGNFullDisplay?find=&place=&nation=&english=Y&subjectid=7009830"

 HREF="http://www.getty.edu/vow/TGNFullDisplay?find=&place=&nation=&english=Y&subjectid=7009830&ptype=PF"

разница в окончании. первый пропускает & ptype = PF, а последний включает его.

в данный момент я использую этот шаблон:

 protected $uriPattern = '/http:\/\/www\.getty\.edu\/vow\/.*?\?find=&place=&nation=&english=Y&subjectid=......./i';

но это работает только для первого.

Интересно, как будет выглядеть шаблон регулярного выражения, чтобы preg_match_all соответствовал им обоим спасибо за помощь.

Ответы [ 3 ]

3 голосов
/ 27 февраля 2010

Если в соответствующих строках есть необязательная часть, вы можете добавить (optional)?, в вашем случае (&ptype=PF)?.

1 голос
/ 27 февраля 2010

Попробуйте это

protected $uriPattern = '/http:\/\/www\.getty\.edu\/vow\/.*?\?find=&place=&nation=&english=Y&subjectid=.......(&ptype=PF){0,1}/i';
0 голосов
/ 27 февраля 2010

Я собирался предложить более краткий

"/http://www\.getty\.edu/vow/TGNFullDisplay\?find=&place=&nation=&english=Y&subjectid=.+(&ptype=PF)?/i"

Прямая косая черта не является особенной ни в PHP, ни в RegEx, поэтому ее не нужно экранировать, а идентификатор может иметь другую длину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...