соответствующая 9-значная строка - PullRequest
0 голосов
/ 02 мая 2011

Я пытаюсь сопоставить 9-значную числовую строку со следующим кодом, но он только возвращает это < Глядя на исходный код удаленной страницы, приведу пример того, что я пытаюсь сопоставить &cd=225730313"

$url = file_get_contents($source);
preg_match('/([0-9]{9})/', $match);
echo $match[0];

Ответы [ 3 ]

4 голосов
/ 02 мая 2011

Вы забыли второй параметр preg_match. Вы также можете рассмотреть выборку скобок (индекс 1) вместо всего шаблона (индекс 0).

$url = file_get_contents($source);
preg_match('/([0-9]{9})/', $url, $match);
echo $match[1];

Я думаю, что причина, по которой вы получаете <, заключается в том, что вы уже использовали $ match ранее, и она содержит строку, начинающуюся с <. preg_match, используемый в вашем вопросе, не изменит $ match, поэтому $ match [0] является первым символом строки, содержащейся в $ match (к строкам можно обращаться как к массивам в PHP).

0 голосов
/ 02 мая 2011
$url = file_get_contents($source);
preg_match('/([0-9]{9})/', $match);
echo $match[1];

Индекс 0 содержит совпадение со всем шаблоном, 1 первый подшаблон и т. Д.

Редактирование:

Чтобы получить цифры после &cd=Я бы предложил расширить шаблон, чтобы он тоже соответствовал этому.

/&cd=([0-9]{9})/
0 голосов
/ 02 мая 2011

Как насчет:

preg_match('/^[0-9]{9}+$/', $match) 

или, может быть, так:

preg_match('/\d{9}/', $match)
...