[php regular expressions] <td>dezetekst</td>

Pagina: 1
Acties:

  • MAZZA
  • Registratie: Januari 2000
  • Laatst online: 09-09 15:29

MAZZA

Barbie is er weer!

Topicstarter
Beetje wazige topic titel misschien maar ik wil dus uit een bestand alles wat tussen <td> en </td> staat vissen.

<td>tekst</td> dat je dan tekst overhoudt.

Ik dacht dat is vast simpel:
PHP:
1
2
3
<?
eregi ("<td>(.*)</td>",'$regel', $output);
?>

Nah mooi niet dus :) Ik ben best wel een n00b op het gebied van regular expressions (valt het al op :? :P ). Het kan ook voorkomen dat de brontekst er zo uit ziet:
code:
1
2
<td>dfgdfgdsgf
</td>

Oftewel met een newline. Maakt dat nog uit :?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 19-09 19:40

Gerco

Professional Newbie

Ik ben ook n00bie, maar dit moet beter werken:
code:
1
eregi ("!<td>(.*)</td>!Usi",'$regel', $output);

Die newline boeit niet, die wordt dan gewoon in de tekst meegenomen en moet je er ff uitstrippen.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52

2

code:
1
$regel = eregi_replace("<td([^>]*)>([^<]+)</td>","\\2", $regel);

Zo is hij misschien wat beter, ook omdat er extra properties in de <td> kunnen staan. Niet getest trouwens.

  • MAZZA
  • Registratie: Januari 2000
  • Laatst online: 09-09 15:29

MAZZA

Barbie is er weer!

Topicstarter
Ok alle html tags zijn nu uit mijn file verdwenen en ik hou nu alleen de tekst over die ik nodig heb. Alleen 1 probleem: Het is nu 1 enorme lange string in deze vorm:
code:
1
7:00blaaht7:30blaaht8:00blaahblaaht8:43blaahterdeblaaht

Nu is dus de vraag: hoe moet ik dit in godsnaam splitten ? :) Er zit een vast verband in: Er staan steeds dubbele punten. En 2 plaatsen voor die dubbele punt moet ik gaan splitten.

Iemand een idee om dit op te lossen :?

  • MAZZA
  • Registratie: Januari 2000
  • Laatst online: 09-09 15:29

MAZZA

Barbie is er weer!

Topicstarter
Niemand een idee :?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Welke van de 2 heb je dan gebruikt, de 1e of de 2e?

ik zou zeggen iets van:
PHP:
1
2
3
4
5
6
7
8
9
<?
$regex = "/<td[^>]+>(.*)</td[^>]+>/";
$lines = array ();

preg_match ( $regex, $string, $lines );

for ( $a = 0; $a < count ( $lines ); $a ++ )
   echo "cel ",$a, ": ", $lines[$a];
?>

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • MAZZA
  • Registratie: Januari 2000
  • Laatst online: 09-09 15:29

MAZZA

Barbie is er weer!

Topicstarter
Sorry ik was niet duidelijk. Het gaat me nu om het 2e probleem :) Hoe ik de overgebleven tekst moet parsen. Zie mijn post hierboven :)

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 19-09 19:40

Gerco

Professional Newbie

Met explode() kun je een boel doen, maar ik weet niet of wat jij wilt daar ook tussen zit. Je kunt iig wel op de dubbele punt splitten.

Een regex behoort natuurlijk ook weer tot de mogelijkheden :)

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op donderdag 04 oktober 2001 10:08 schreef MAZZA het volgende:
Sorry ik was niet duidelijk. Het gaat me nu om het 2e probleem :) Hoe ik de overgebleven tekst moet parsen. Zie mijn post hierboven :)
Zie mijn post: je houdt een array over met per index 1 celinhoud. Die celinhoud is gewoon bewaard gebleven, dus... wat valt er dan nog te parsen?

|:( newlines ook natuurlijk
PHP:
1
2
3
4
5
6
7
8
9
<?
$regex = "/<td[^>]+>((.|\n)*)</td[^>]+>/i";
$lines = array ();

preg_match ( $regex, $string, $lines );

for ( $a = 0; $a < count ( $lines ); $a ++ )
   echo "cel ",$a, ": ", $lines[$a];
?>

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1