[PHP] regular expression probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Scotix
  • Registratie: Juni 2002
  • Laatst online: 15:34
Hallo Tweakers,

Ik ben nu bezig met een scriptje wat bepaalde Table rows wegfiltert na een check.

Ik vang een lap html op. Hier wil ik de Table uithalen en dan de rows uithalen, kijken of ze er mogen staan, zoja: laten staan. Zonee: weg ermee. En dan natijd alle html weer in elkaar zetten.

Nu zit ik al met een probleem; de tabel eruit halen. Mijn kennis van regular expressions is nog niet echt super:) heb verschillende tutorials doorgelezen. maar gaat niet goed. Maja. eens moet je het leren :P

Oke, de html code die ik binnen krijg: (ook niet echt lekker geschreven)

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<html><head><title></title>
<LINK REL="STYLESHEET" HREF="/style.css">
</head>
<body marginwidth=0 marginheight=0 leftmargin=20 topmargin=10>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="25"  valign="center" ><img src="..\gif\Bcam.gif" border="0"></td>
<td width="287" valign="center" class="bodytext"><b><a href="#URL#" target="stage">#TEXT#</a></b></td>
<td width="110"  valign="center" class="bodytext"><b>#TEXT#</b></td>
<td width="107" align="right" valign="center" class="bodytext"><b>#TEXT#</b>

</td></tr>
<tr height=20 class="tr2">
<td width="25"  valign="center" ><img src="..\gif\Bcam.gif" border="0"></td>
<td width="287" valign="center" class="bodytext"><b><a href="#URL#" target="stage">#TEXT#</a></b></td>
<td width="110"  valign="center" class="bodytext"><b>#TEXT#</b></td>
<td width="107" align="right" valign="center" class="bodytext"><b>#TEXT#</b>
</td></tr>
<tr>
<td width="25"  valign="center" ><img src="..\gif\Bcam.gif" border="0"></td>
<td width="287" valign="center" class="bodytext"><b><a href="#URL#" target="stage">#TEXT#</a></b></td>
<td width="110"  valign="center" class="bodytext"><b>#TEXT#</b></td>

<td width="107" align="right" valign="center" class="bodytext"><b>#TEXT#</b>

</td></tr>
<tr height=20 class="tr2">
<td width="25"  valign="center" ><img src="..\gif\Bcam.gif" border="0"></td>
<td width="287" valign="center" class="bodytext"><b><a href="#URL#" target="stage">#TEXT#</a></b></td>
<td width="110"  valign="center" class="bodytext"><b>#TEXT#</b></td>
<td width="107" align="right" valign="center" class="bodytext"><b>#TEXT#</b>
</td></tr>

<tr>
<td width="25"  valign="center" ><img src="..\gif\Bcam.gif" border="0"></td>
<td width="287" valign="center" class="bodytext"><b><a href="#URL#" target="stage">#TEXT#</a></b></td>
<td width="110"  valign="center" class="bodytext"><b>#TEXT#</b></td>
<td width="107" align="right" valign="center" class="bodytext"><b>#TEXT#</b>
</td></tr>
<tr height=20 class="tr2">
<td width="25"  valign="center" ><img src="..\gif\Bcam.gif" border="0"></td>
<td width="287" valign="center" class="bodytext"><b><a href="#URL#" target="stage">#TEXT#</a></b></td>
<td width="110"  valign="center" class="bodytext"><b>#TEXT#</b></td>

<td width="107" align="right" valign="center" class="bodytext"><b>#TEXT#</b>
</td></tr>
</table></body></html>

<p><br><BR><BR>
<table><tr>
<td align="right" valign="middle" class="bodytextsmall2">
© 2007 <a href=#URL# target=_top>TEST</a> 
</td></tr></table>


De rows in de eerste tabel moeten gefiltert worden.

Mijn idee:
stap 1:
Alles totaan de eerste <tr> ,
alles vanaf de eerste <tr> tot de laatste </tr> (van de middelste tabel)
En alles vanaf de laatste </tr> in een array te stoppen.
Stap 2:
dan die array[1] de rows in een array stoppen.
Stap 3:
Filteren, en dan alleen toelaten wat mag.
Stap 4:
Dan alles weer aan elkaar plakken.

maar ik krijg het niet voor mekaar met regular expressions om stap 1 te voltooien.

Hoe krijg ik dit voor mekaar? Ik heb al meerdere dingen geprobeerd. maar het dringt niet tot me door.

Acties:
  • 0 Henk 'm!

  • software
  • Registratie: Mei 2003
  • Laatst online: 02-01 09:26
Heb je al iets geschreven in php ?
Ik zie nu alleen maar html.

Acties:
  • 0 Henk 'm!

  • Pkunk
  • Registratie: December 2003
  • Laatst online: 11-09 17:52
Wat wil je precies met die regexp gaan doen?

Hallo met Tim


Acties:
  • 0 Henk 'm!

  • Scotix
  • Registratie: Juni 2002
  • Laatst online: 15:34
software schreef op dinsdag 09 januari 2007 @ 19:46:
Heb je al iets geschreven in php ?
Ik zie nu alleen maar html.
jawel, maar is niet echt van waarde denk ik.
Timlog schreef op dinsdag 09 januari 2007 @ 19:56:
Wat wil je precies met die regexp gaan doen?
In het midden staat een tabel. Deze wil ik eruit halen. dan de rows in een array gooien. array bij langs gaan. eventueel welke eruit mieteren (heeft verder geen rol bij deze vraag)
daarna alles weer aan elkaar plakken.

Acties:
  • 0 Henk 'm!

  • software
  • Registratie: Mei 2003
  • Laatst online: 02-01 09:26
Dus met andere woorden, je wilt #TEXT# in een array steken ?

Acties:
  • 0 Henk 'm!

  • Scotix
  • Registratie: Juni 2002
  • Laatst online: 15:34
nee, de hele html van de Tabel rows (<tr> </tr>) inclusief de <tr> <td> etc

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

preg_match_all met #<tr>(?!</tr>)</tr># als regexp, eventueel met de juiste modifiers erbij lijkt me aardig te voldoen aan je vraag. :)

'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!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
Scotix schreef op dinsdag 09 januari 2007 @ 20:37:
[...]

jawel, maar is niet echt van waarde denk ik.
das altijd fout gedacht :)
als wij kunnen zien hoe jij het gedacht had, kunnen wij zien waar je eventueel fout gedacht hebt.
zo leer je meer dan dat wij jouw hier een regex stringetje geven waarmee jij je probleem 123 oplost
-NMe- schreef op woensdag 10 januari 2007 @ 03:17:
preg_match_all met #<tr>(?!</tr>)</tr># als regexp, eventueel met de juiste modifiers erbij lijkt me aardig te voldoen aan je vraag. :)
"/<tr(.*?)>(.*?)</tr>/i" lijkt me hier 'beter' omdat er binnen de <tr> nog eigenschappen staan (of bedoelde je dat met 'modifiers'?)

[ Voor 32% gewijzigd door BasieP op 10-01-2007 08:44 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • Scotix
  • Registratie: Juni 2002
  • Laatst online: 15:34
sorry voor mijn late reactie!

Ik ben er even mee bezig gegaan.
Maar nu krijg ik een fout.

ik heb het volgende:

PHP:
1
$bestand    = preg_match_all("/<tr(.*?)>(.*?)</tr>/i", $this->inhoud, $trs);


foutmelding:

Warning: preg_match_all() [function.preg-match-all]: Unknown modifier 't' in ......

Acties:
  • 0 Henk 'm!

Verwijderd

/ is je delimiter, en kun je dus niet in de expressie gebruiken zonder te escapen.

Bij HTML kun je beter ~ of # als delimiters gebruiken.

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Escape je slashes dan ook gewoon als je ze letterlijk nodig hebt in je expressie. ;)

'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!

  • Scotix
  • Registratie: Juni 2002
  • Laatst online: 15:34
PHP:
1
$bestand    = preg_match_all("/<tr(.*?)>(.*?)<\/tr>/i", $this->inhoud, $trs);

mijn code nu.

geen foutmeldingen, maar ook geen output.
wat doe ik fout?
Verwijderd schreef op donderdag 11 januari 2007 @ 21:37:
Bij HTML kun je beter ~ of # als delimiters gebruiken.
Mijn kennes van Regular Expressions is 0 :P Dus ik snap eigelijk niet echt wat je bedoelt:)

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Scotix schreef op donderdag 11 januari 2007 @ 21:52:
Mijn kennes van Regular Expressions is 0 :P Dus ik snap eigelijk niet echt wat je bedoelt:)
Dan ga je toch even [google=regular expressions delimiters]?

'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