Preg_match_all работает с фрагментами, но не со всей веб-страницей.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Preg_match_all работает с фрагментами, но не со всей веб-страницей.

Сообщение Anonymous »

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

Мой вопрос связан с обратной ссылкой preg_match для поиска конечного тега. Но теперь у меня другая проблема.

Регулярное выражение, полученное из приведенного ниже кода

Код: Выделить всё

/\{(.*?)_start\}.*\{\1_stop\}/s
Preg_match_all

Код: Выделить всё

$loopPattern = "/\\$this->tokenStartDelimiter(.*?)_start\\$this->tokenStopDelimiter.*\\$this->tokenStartDelimiter\\1_stop\\$this->tokenStopDelimiter/s";
preg_match_all($loopPattern, $this->template, $matches);
foreach ($matches[0] as $match) {
$this->template = str_replace($match, '', $this->template);
}
Вся страница

Код: Выделить всё







Appointment-Plus
















DB Games
[url=#]Save[/url]






New Appointment




Appointment



Location: 

Choose One

Mesa
Chandler


{AppointmentStaffSelect_start}
With: 

Choose One

Brian
Mckenna
Katelyn
David
Ryan
Ryan - c
Tami
Jake

{AppointmentStaffSelect_stop}
{Test}
{AppointmentTest_start}

{AppointmentTest_stop}

Service: 

Choose One
30 Minute Gaming Pass
1 Hour Gaming Pass
2 Hour Gaming Pass


{AppointmentAddonService_start}

Add-on Service(s):


Unlimited Snack Bar


Unlimited Energy Drinks


Candy Bar


{AppointmentAddonService_stop}

Date:  

Choose One
{apptCreateEditDateOption_start}
{Name}{apptCreateEditDateOption_stop}


Time: 

Choose One
{apptCreateEditTimeOption_start}
{Name}{apptCreateEditTimeOption_stop}




Children

Page 2

Appointment Details

Special Instructions for Customer: 


{apptCreateEditPONumber_start}
{LName}: 

{apptCreateEditPONumber_stop}

{apptCreateEditVehicleMake_start}
{LName}: 

Choose One
{apptCreateEditMakeOption_start}
{Name}{apptCreateEditMakeOption_stop}

{apptCreateEditVehicleMake_stop}

{apptCreateEditVehicleModel_start}
{LName}: 

Choose One
{apptCreateEditModelOption_start}
{Name}{apptCreateEditModelOption_stop}

{apptCreateEditVehicleModel_stop}

{apptCreateEditVehicleYear_start}
{LName}: 

Choose One
{apptCreateEditYearOption_start}
{Name}{apptCreateEditYearOption_stop}

{apptCreateEditVehicleYear_stop}

{apptCreateEditVehicleOther_start}
{LName}: 

{apptCreateEditVehicleOther_stop}

{apptCreateEditVehicleVIN_start}
{LName}: 

{apptCreateEditVehicleVIN_stop}

{apptCreateEditVehicleOdometer_start}
{LName}:  & l t ; / l a b e l & g t ; < b r   / > & l t ; i n p u t   t y p e = " n u m b e r "   i d = " a p p t C r e a t e E d i t O d o m e t e r "   n a m e = " a p p t C r e a t e E d i t O d o m e t e r "   c l a s s = " { C l a s s } "   v a l u e = " { A p p t C r e a t e E d i t V e h i c l e O d o m e t e r } " / & g t ; < b r   / > { a p p t C r e a t e E d i t V e h i c l e O d o m e t e r _ s t o p } < b r   / >                 & l t ; / p & g t ; < b r   / >         & l t ; / d i v & g t ; < b r   / > < b r   / >         & l t ; d i v   d a t a - r o l e = " c o l l a p s i b l e "   c l a s s = " p o s t R e g i s t r a t i o n C o l l a p s i b l e   u i - d i s a b l e d "   d a t a - c o l l a p s e d = " t r u e "   d a t a - c o l l a p s e d - i c o n = " a r r o w - r "   d a t a - e x p a n d e d - i c o n = " a r r o w - d " & g t ; < b r   / >                 & l t ; h 3 & g t ; R e g i s t e r   /   L o g i n & l t ; / h 3 & g t ; < b r   / >                 & l t ; p & g t ; < b r   / >                         & l t ; s c r i p t   s r c = " j s / p a g e s / p o s t R e g i s t r a t i o n . j s " & g t ; & l t ; / s c r i p t & g t ; < b r   / > & l t ; d i v   d a t a - r o l e = " f i e l d c o n t a i n "   c l a s s = " h i d d e n " & g t ; < b r   / >         & l t ; p   i d = " p o s t R e g i s t r a t i o n M e s s a g e " & g t ; & l t ; / p & g t ; < b r   / > & l t ; / d i v & g t ; < b r   / > & l t ; a   h r e f = " # r e g i s t e r P o p u p D i v "   c l a s s = " p o s t R e g i s t r a t i o n B u t t o n s "   d a t a - r o l e = " b u t t o n "   d a t a - r e l = " p o p u p "   d a t a - i n l i n e = " t r u e " & g t ; R e g i s t e r & l t ; / a & g t ; < b r   / > & l t ; a   h r e f = " # l o g i n P o p u p D i v "   c l a s s = " p o s t R e g i s t r a t i o n B u t t o n s "   d a t a - r o l e = " b u t t o n "   d a t a - r e l = " p o p u p "   d a t a - i n l i n e = " t r u e " & g t ; L o g i n & l t ; / a & g t ; < b r   / > & l t ; d i v   i d = " r e g i s t e r P o p u p D i v "   d a t a - r o l e = " p o p u p "   d a t a - o v e r l a y - t h e m e = " a "   c l a s s = " u i - c o n t e n t "   d a t a - c o r n e r s = " t r u e "   d a t a - s h a d o w = " t r u e "   d a t a - p o s i t i o n - t o = " w i n d o w "   d a t a - t r a n s i t i o n = " f l o w "   d a t a - t h e m e = " c " & g t ; < b r   / >         & l t ; f o r m   i d = " r e g i s t e r F o r m P o p u p "   d a t a - a j a x = " f a l s e " & g t ; < b r   / >         & l t ; d i v   d a t a - r o l e = " f i e l d c o n t a i n "   d a t a - i n s e t = " f a l s e " & g t ; < b r   / > < b r   / > & l t ; l a b e l   f o r = " f i r s t _ n a m e "   c l a s s = " r e q u i r e d " & g t ; F i r s t   N a m e 1 : & l t ; / l a b e l & g t ; < b r   / > & l t ; i n p u t   t y p e = " t e x t "   i d = " f i r s t _ n a m e "   n a m e = " f i r s t _ n a m e "   v a l u e = " { V a l u e } "   c l a s s = " r e q u i r e d "   r e q u i r e d / & g t ; < b r   / > < b r   / > & l t ; l a b e l   f o r = " m i d d l e _ n a m e "   c l a s s = " { C l a s s } " & g t ; M i d d l e   N a m e : & l t ; / l a b e l & g t ; < b r   / > & l t ; i n p u t   t y p e = " t e x t "   i d = " m i d d l e _ n a m e "   n a m e = " m i d d l e _ n a m e "   v a l u e = " { V a l u e } "   c l a s s = " { C l a s s } "   { R e q u i r e d } / & g t ; < b r   / > < b r   / > & l t ; l a b e l   f o r = " l a s t _ n a m e "   c l a s s = " r e q u i r e d " & g t ; L a s t   N a m e 1 : & l t ; / l a b e l & g t ; < b r   / > & l t ; i n p u t   t y p e = " t e x t "   i d = " l a s t _ n a m e "   n a m e = " l a s t _ n a m e "   v a l u e = " { V a l u e } "   c l a s s = " r e q u i r e d "   r e q u i r e d / & g t ; < b r   / > < b r   / > & l t ; l a b e l   f o r = " e m a i l "   c l a s s = " { C l a s s } " & g t ; e M a i l : & l t ; / l a b e l & g t ; < b r   / > & l t ; i n p u t   t y p e = " e m a i l "   i d = " e m a i l "   n a m e = " e m a i l "   v a l u e = " { V a l u e } "   c l a s s = " { C l a s s } "   { R e q u i r e d } / & g t ; < b r   / > < b r   / > & l t ; l a b e l   f o r = " l o g i n "   c l a s s = " { C l a s s } " & g t ; L o g i n : & l t ; / l a b e l & g t ; < b r   / > & l t ; i n p u t   t y p e = " t e x t "   i d = " l o g i n "   n a m e = " l o g i n "   v a l u e = " { V a l u e } "   c l a s s = " { C l a s s } "   { R e q u i r e d } / & g t ; < b r   / > < b r   / > & l t ; l a b e l   f o r = " p a s s w o r d "   c l a s s = " { C l a s s } " & g t ; P a s s w o r d : & l t ; / l a b e l & g t ; < b r   / > & l t ; i n p u t   t y p e = " p a s s w o r d "   i d = " p a s s w o r d "   n a m e = " p a s s w o r d "   v a l u e = " { V a l u e } "   c l a s s = " { C l a s s } "   { R e q u i r e d } / & g t ; < b r   / > < b r   / > & l t ; l a b e l   f o r = " c u s t o m e r _ i d _ u n i q u e " & g t ; C u s t o m e r   I D : & l t ; / l a b e l & g t ; < b r   / > & l t ; i n p u t   t y p e = " t e x t "   i d = " c u s t o m e r _ i d _ u n i q u e "   n a m e = " c u s t o m e r _ i d _ u n i q u e "   v a l u e = " { V a l u e } "   c l a s s = " r e a d o n l y "   r e a d o n l y / & g t ; < b r   / > < b r   / >         & l t ; / d i v & g t ; < b r   / >         & l t ; d i v   d a t a - r o l e = " f i e l d c o n t a i n "   d a t a - i n s e t = " f a l s e " & g t ; < b r   / >                 & l t ; i n p u t   t y p e = " b u t t o n "   n a m e = " r e g i s t e r P o p u p B u t t o n "   i d = " r e g i s t e r P o p u p B u t t o n "   v a l u e = " R e g i s t e r " / & g t ; < b r   / >         & l t ; / d i v & g t ; < b r   / > & l t ; / f o r m & g t ; < b r   / > & l t ; / d i v & g t ; < b r   / > & l t ; d i v   i d = " l o g i n P o p u p D i v "   d a t a - o v e r l a y - t h e m e = " a "   d a t a - r o l e = " p o p u p "   c l a s s = " u i - c o n t e n t "   d a t a - c o r n e r s = " t r u e "   d a t a - s h a d o w = " t r u e "   d a t a - p o s i t i o n - t o = " w i n d o w "   d a t a - t r a n s i t i o n = " f l o w "   d a t a - t h e m e = " c " & g t ; < b r   / >         & l t ; f o r m   i d = " l o g i n F o r m P o p u p "   d a t a - a j a x = " f a l s e " & g t ; < b r   / >         & l t ; d i v   d a t a - r o l e = " f i e l d c o n t a i n "   c l a s s = " u i - h i d e - l a b e l " & g t ; < b r   / >                 & l t ; l a b e l   f o r = " l o g i n - u s e r n a m e " & g t ; U s e r n a m e : & l t ; / l a b e l & g t ; < b r   / >                 & l t ; i n p u t   t y p e = " t e x t "   n a m e = " l o g i n - u s e r n a m e "   i d = " l o g i n - u s e r n a m e "   v a l u e = " "   p l a c e h o l d e r = " U s e r n a m e " / & g t ; < b r   / > < b r   / >         & l t ; / d i v & g t ; < b r   / >         & l t ; d i v   d a t a - r o l e = " f i e l d c o n t a i n "   c l a s s = " u i - h i d e - l a b e l " & g t ; < b r   / > < b r   / >                 & l t ; l a b e l   f o r = " l o g i n - p a s s w o r d " & g t ; P a s s w o r d & l t ; / l a b e l & g t ; < b r   / >                 & l t ; i n p u t   t y p e = " p a s s w o r d "   n a m e = " l o g i n - p a s s w o r d "   i d = " l o g i n - p a s s w o r d "   v a l u e = " "   p l a c e h o l d e r = " P a s s w o r d " / & g t ; < b r   / >         & l t ; / d i v & g t ; < b r   / >         & l t ; d i v   d a t a - r o l e = " f i e l d c o n t a i n "   d a t a - i n s e t = " f a l s e " & g t ; < b r   / >                 & l t ; i n p u t   t y p e = " b u t t o n "   n a m e = " l o g i n P o p u p B u t t o n "   i d = " l o g i n P o p u p B u t t o n "   v a l u e = " L o g i n " / & g t ; < b r   / >         & l t ; / d i v & g t ; < b r   / >         & l t ; d i v   d a t a - r o l e = " f i e l d c o n t a i n "   d a t a - i n s e t = " f a l s e " & g t ; < b r   / >                 & l t ; a   h r e f = " # "   i d = " f o r g o t P o p u p P a s s w o r d "   d a t a - r e l = " p o p u p " & g t ; F o r g o t   P a s s w o r d ? & l t ; / a & g t ; < b r   / >         & l t ; / d i v & g t ; < b r   / > & l t ; / f o r m & g t ; < b r   / > & l t ; / d i v & g t ; < b r   / >                 & l t ; / p & g t ; < b r   / >         & l t ; / d i v & g t ; < b r   / > < b r   / >         & l t ; d i v   d a t a - r o l e = " c o l l a p s i b l e "   d a t a - c o l l a p s e d = " t r u e "   c l a s s="ui-disabled" data-collapsed-icon="arrow-r" data-expanded-icon="arrow-d">
Verification

Page 5





{RegisterSection_start}

Register





First Name1:


Middle Name:


Last Name1:


eMail:


Login:


Password:


Customer ID:







{RegisterSection_stop}

Login




Username:


Password




[url=#passwordResetDiv]Forgot Password?[/url]






Email:
















Результат со всей страницы

Код: Выделить всё

Array
(
[0] =>  Array
(
[0] => {AppointmentStaffSelect_start}
With: 

Choose One

Brian
Mckenna
Katelyn
David
Ryan
Ryan - c
Tami
Jake

{AppointmentStaffSelect_stop}
)

[1] => Array
(
[0] => AppointmentStaffSelect
)

)
Небольшие порции обрабатываются нормально

Код: Выделить всё

{AppointmentStaffSelect_start}
With: 

Choose One

Brian
Mckenna
Katelyn
David
Ryan
Ryan - c
Tami
Jake

{AppointmentStaffSelect_stop}
{Test}
{AppointmentTest_start}

{AppointmentTest_stop}

Service: 

Choose One
30 Minute Gaming Pass
1 Hour Gaming Pass
2 Hour Gaming Pass


{AppointmentAddonService_start}

Add-on Service(s):


Unlimited Snack Bar


Unlimited Energy Drinks


Candy Bar


{AppointmentAddonService_stop}
Результат с небольшой страницы

Код: Выделить всё

Array
(
[0] => Array
(
[0] =>  {AppointmentStaffSelect_start}
With: 

Choose One

Brian
Mckenna
Katelyn
David
Ryan
Ryan - c
Tami
Jake

{AppointmentStaffSelect_stop}
[1] => {AppointmentTest_start}

{AppointmentTest_stop}
[2] => {AppointmentAddonService_start}

Add-on Service(s):


Unlimited Snack Bar


Unlimited Energy Drinks


Candy Bar


{AppointmentAddonService_stop}
)

[1] => Array
(
[0] => AppointmentStaffSelect
[1] => AppointmentTest
[2] => AppointmentAddonService
)

)
Как мне заставить его проанализировать всю страницу и вернуть все совпадения? Небольшие части анализируются нормально, но когда я пытаюсь выполнить поиск по всей странице, кажется, что результаты возвращаются только до первого токена {Test.

Подробнее здесь: https://stackoverflow.com/questions/130 ... e-web-page
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»