[PHP] Reg exp waanzin

Pagina: 1
Acties:

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 13-09 23:09
Ik weet dat alle begin moeilijk is, maar ik wordt nu een beetje heel erg :? !!

Uit een HTML file (waarin 1 of meer tabellen staan) wil ik de tabellen (dus "<TABLE>blabla</TABLE>" ) in een arraytje hebben. Dit lijkt me toch niet zo heel moeilijk.

Het volgende heb ik nu :
PHP:
1
2
3
<?
eregi ("<table>(.*)<\/table>", $data, $arr);  
?>

Ik heb ook al verschillende varianten met \n erin geprobeerd omdat een tabel natuurlijk over meerdere regels in de file staat, maar niets wil lukken. Het enige dat steeds verschijnt is dat in $arr[0] alles vanaf de eerste <TABLE> staat en dus ook de 2e en volgende tabellen.

Wie helpt me uit de droom?! :)

SIZE does matter.
"You're go at throttle up!"


  • tomato
  • Registratie: November 1999
  • Niet online
Gebruik een non-greedy quantifier:
code:
1
/<table>(.*?)<\/table>/is

(preg_match_all voor nodig)

  • razor-x
  • Registratie: Februari 2001
  • Laatst online: 05-06 07:37
je gebruikt de functie verkeerd

controlleer het hier nog maar eens

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 13-09 23:09
PHP:
1
2
3
<?
preg_match_all ("/<table>(.*?)<\/table>/is", $data, $arr);
?>

Dit heb ik nu, maar dan krijg ik met var_dump($arr) :
code:
1
array(2) { [0]=> array(0) { } [1]=> array(0) { } }

wat mij twee lege arrays lijken. nu ben ik pas bezig met reg.exp. Kan iemand me misschien nog een beetje op weg helpen (links/voorbeelden?)

Wil het graag zelf uitzoeken, maar ik zie het denk ik niet meer momenteel.

thnx

SIZE does matter.
"You're go at throttle up!"


  • tomato
  • Registratie: November 1999
  • Niet online
[edit]
Je hebt dus niets gematched.

Let me see...

[edit2]
Volgens mij doe je niets fout...
PHP:
1
2
3
4
5
6
7
8
9
<?
$s = "<table>hoi</table>";

$p = "/<table>(.*?)<\/table>/is";

preg_match_all($p, $s, $a);

print_r($a);
?>

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 13-09 23:09
Op maandag 24 september 2001 23:45 schreef tomato het volgende:

Volgens mij doe je niets fout...
Kan het er misschien aan liggen dat de tabel in de HTML file over meerdere regels loopt. Zover ik heb kunnen achterhalen staat de '.' voor elke non-newline karakter, dus je moet dan een newline er ook nog in verwerken.
code:
1
((.*)\n){1,}

SIZE does matter.
"You're go at throttle up!"


  • tomato
  • Registratie: November 1999
  • Niet online
Op dinsdag 25 september 2001 09:26 schreef Skinny het volgende:
Kan het er misschien aan liggen dat de tabel in de HTML file over meerdere regels loopt. Zover ik heb kunnen achterhalen staat de '.' voor elke non-newline karakter, dus je moet dan een newline er ook nog in verwerken.
De /s modifier zou dots ook newlines moeten laten matchen, dus dat is het probleem niet...

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 13-09 23:09
Nou, het is voor een groot deel gelukt, dank!
PHP:
1
2
3
<?
preg_match_all ("/ VALIGN=TOP>(.*?)<\//is", $file_tabel, $files);
?>

Maar... ik zei een groot deel.

Ik krijg nu de inhoud van alle cellen die ik wil hebben, maar bij sommige staat er nog een <FONT> tag voor de inhoud.
code:
1
2
<TD>INHOUD</TD>
<TD><FONT blaat>INHOUD</TD>

Nu kan ik deze natuurlijk verwijderen in een tweede regel, maar ik heb zo vermoeden (ik weet haast wel zeker) dat je dit ook in een regexp kan doen. (een soort optionele match :? ofzo)..

Nu heb ik hier in mijn php bijbel wel (ik denk) alle parameters staan, maar kom er niet uit.

SIZE does matter.
"You're go at throttle up!"

Pagina: 1