PHP preg_match не соответствует - PullRequest
0 голосов
/ 19 марта 2012

Может, кто-нибудь объяснит мне, почему это регулярное выражение ничего не соответствует, когда оно должно:

preg_match('@<title>([^<].)</title>@',$meta,$match);

Я пытаюсь сопоставить все между тегами <title> и </title>, имеющимипомните, что их может быть больше одного, поэтому регулярное выражение должно быть неуклюжим.

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

Вы должны иметь в виду ([^<]+) или ([^<]*) вместо ([^<].), поскольку последнее означает совпадение с чем-то, кроме <, за которым следует любой символ

0 голосов
/ 19 марта 2012

Это . будет соответствовать только один символ (любой символ).Вы захотите немного изменить предыдущее выражение ([^<] - «не совпадать с открытой кареткой»).Чтобы оно совпадало с несколькими, добавьте *.Чтобы сделать это некрасивым, добавьте ?:

preg_match('@<title>([^<]*?)</title>@',$meta,$match);
...