[php] Deel regexp optioneel maken*

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik heb een preg_match expressie geschreven..
PHP:
1
preg_match_all('/<tr name=\'([^"]*?)\' id=".*"><td align=center><input type=checkbox name=".*" onClick="CCA\(this\)" id=".*"><\/td>.*<a href="#" onclick="javascript:DoAD\(\'\',\'&strUsrView=\',event\);return false;">([^"]*?)<\/a>.*<a href="#" onclick="javascript:DC\(event\);return false;">([^"]*?)<\/a>.*<\/tr>/U', $page, $matches);


Hiermee probeer ik uit de onderstaande html wat gegevens te halen
code:
1
2
3
4
5
<tr name='**************@**.com' id="eb11bc15-b899-4621-bdf2-9da399f68a5c"><td align=center><input type=checkbox name="ADDReb11bc15-b899-4621-bdf2-9da399f68a5c" onClick="CCA(this)" id="hotmail"></td><td width=1%></td><td width=1%></td><td nowap><a href="#" onclick="javascript:DoAD('','&strUsrView=',event);return false;">hylsniper</a></td><td><a href="#" onclick="javascript:DC(event);return false;">*******@********.comm</a></td><td nowrap>31 0627268979</td></tr>

<tr name='****@***.com' id="bfaed1c3-fff1-42c5-9c27-12791292efa3"><td align=center><input type=checkbox name="ADDRbfaed1c3-fff1-42c5-9c27-12791292efa3" onClick="CCA(this)" id="messenger"></td><td width=1%></td><td width=1%>[img]"http://gfx2.hotmail.com/i.p.ccard.jpg"[/img]</td><td nowap><a href="#" onclick="javascript:DoAD('','&strUsrView=',event);return false;">ik_heet_dennis</a></td><td><a href="#" onclick="javascript:DC(event);return false;">*****@*******.com</a></td><td></td></tr>

<tr name='' id="df64b167-2543-4e68-9b0b-1c53e11c18fa"><td align=center><input type=checkbox name="ADDRdf64b167-2543-4e68-9b0b-1c53e11c18fa" onClick="CCA(this)" id="hotmail"></td><td width=1%></td><td width=1%></td><td nowap><a href="#" onclick="javascript:DoAD('','&strUsrView=',event);return false;">info75</a></td><td></td><td nowrap>31 625025025</td></tr>


Het probleem is nu al1 dat het goed gaat behalve dat in het onderste stukje html maar 1x een <a href is gebruikt. Mijn preg_match gaat er vanuit dat er 2x een <a href gebruikt word. Hoe kan ik er nu voor zorgen dat hij als de <a href maar 1x voorkomt hij niet gaat zoeken naar de 2e?

Khoop dat 't een beetje te begrijpen is wat ik bedoel ;)

[ Voor 28% gewijzigd door Verwijderd op 22-06-2005 16:11 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Haakjes om het tweede <a></a> blok zetten en een vraagteken erachter, dan wordt het optioneel.

Edit: ik heb meteen even je titel gefixt, "preg_match" zegt niets over je probleem. ;)

[ Voor 30% gewijzigd door NMe op 22-06-2005 15:55 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op woensdag 22 juni 2005 @ 15:55:
Haakjes om het tweede <a></a> blok zetten en een vraagteken erachter, dan wordt het optioneel.

Edit: ik heb meteen even je titel gefixt, "preg_match" zegt niets over je probleem. ;)
Jah idd zo is de titel wat beter..

Kheb het al een keer geprobeerd met die haakjes maar dan werkt het helemaal niet meer.
Hij geeft geen fouten maar $matches[2] en [3] blijven nu leeg.

PHP:
1
preg_match_all('/<tr name=\'([^"]*?)\' id=".*"><td align=center><input type=checkbox name=".*" onClick="CCA\(this\)" id=".*"><\/td>.*(<a href="#" onclick="javascript:DoAD\(\'\',\'&strUsrView=\',event\);return false;">([^"]*?)<\/a>.*<a href="#" onclick="javascript:DC\(event\);return false;">([^"]*?)<\/a>)?.*<\/tr>/U', $page, $matches);

Acties:
  • 0 Henk 'm!

Verwijderd

Er loopt al een topic over precies hetzelfde probleem, maar dan beter geformuleerd vind ik:
[REGEXP/TCL] Matched meer dan wanneer ik gewoon test

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb hem nu zo

PHP:
1
preg_match_all('/<tr name=\'([^"]*?)\' id=".*"><td align=center><input type=checkbox name=".*" onClick="CCA\(this\)" id=".*"><\/td>.*<a href="#" onclick="javascript:DoAD\(\'\',\'&strUsrView=\',event\);return false;">([^"]*?)<\/a>.*(<a href="#" onclick="javascript:DC\(event\);return false;">([^"]*?)<\/a>)?.*<\/tr>/U', $page, $matches);


Hij doet 't nu alleen krijg ik de waarde nog niet uit de $matches[3] Waarschijnlijk omdat ik nu binnen die haakjes nog een keer haakjes gebruik. Hoe is dat op te lossen?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Doe eens een print_r($matches), dan zie je hoe je matches-array in elkaar zit. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op woensdag 22 juni 2005 @ 17:10:
Doe eens een print_r($matches), dan zie je hoe je matches-array in elkaar zit. ;)
Heb ik idd gedaan en al die matches waren leeg kheb het nu anders gedaan

PHP:
1
preg_match_all('/<tr name=\'([^"]*?)\' id=".*"><td align=center><input type=checkbox name=".*" onClick="CCA\(this\)" id=".*"><\/td>.*<a href="#" onclick="javascript:DoAD\(\'\',\'&strUsrView=\',event\);return false;">([^"]*?)<\/a><\/td><td><a href="#" onclick="javascript:DC\(event\);return false;">([^"]*?)<\/a>.*<\/tr>/U', $page, $matches);

In principe moet nu de html 2x een <a href bevatten.Dit was uiteindelijk ook mijn doel en dat werkt nu. Ik wou het dus veelste moeilijk doen :)

Dus van mij mag ie op slot :)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Topics gaan niet op slot als ze opgelost zijn, topics gaan op slot als ze niet mogen/kunnen volgens de policy. :)

Ik laat dit topic dus gewoon open. Wie weet heeft iemand anders nog wel een handige suggestie? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1