Помогите разрешить один ньюанс в регульрном выражении

Pyatka-ubiyca

Новичок
Помогите разрешить один ньюанс в регульрном выражении

Имею такое регульряное выражение

PHP:
preg_match_all("/(?<=test\.php\?id=[0-9]\">)[а-яА-Яa-zA-Z0-9]*(?=<\/a>)/", $text, $id);
которым выдергиваю названия ссылок..
но вот в этом месте

?id=[0-9]\">)

id может быть и одназназным, и двух и трех значным числом... причем
[0-9]* - не работает! и выдает вот эту ошибку :
Warning: Compilation failed: lookbehind assertion is not fixed length at offset 29 in

как решить проблему? не хотелось бы делать второй цикл где я бы сначала выдергивал число, а потом уже все что мне нужно...

с регулярными выражениями в первый раз... чтото пока не получаеться ниче(((
 

SelenIT

IT-лунатик :)
заменить ретроспективную проверку на незахватывающие скобки?
 

Pyatka-ubiyca

Новичок
"заменить ретроспективную проверку на незахватывающие скобки? "

можно чуть подброней? или хотябы смысл этих незахватываюших скобок?

"/(test\.php\?id=[0-9]*\"> )[а-яА-Яa-zA-Z0-9]*(<\/a> )/U
"
яже писал что [0-9]* - не прокатывает! или я чтото мимо глаз пропустил?
 

rooot

Новичок
но вот в этом месте

?id=[0-9]\"> )

id может быть и одназназным, и двух и трех значным числом... причем
[0-9]* - не работает! и выдает вот эту ошибку :
---------------------------------------------
для этого пишут так \d+
 

Gas

может по одной?
PHP:
preg_match_all('~test\.php\?id=\d+">([^<]*)</a>~sU', $text, $id);
 
Сверху