[PHP] preg_replace pakt tweede value niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 07-07 13:36
Ik zal wel iets ontzettends doms doen, en ik heb ook al de manual op php.net/preg_replace doorzocht, en de fora hier op GoT maar ben nog niet ergens op gestuit waar ik iets aan heb.

Ik heb de volgende code:
PHP:
1
2
3
$zoeken = '/\<TABLE ([^\\[]*)\>([^\\[]*)\<\/TABLE\>/e';
$vervang = '\$this->convertHtmlTabel("\\2")';
$output = preg_replace($zoeken,$vervang,$htmltext);


Wat ik dus wil is alles wat tussen de <TABLE> tags staat er uit vissen, die data wil ik in de functie convertHtmlTabel gebruiken. Alleen de value \\2 is leeg, als ik \\1 invul wil het wel lukken, dan krijg ik alleen de 'settings' uit de table tag mee (zoals border=1 cellspacing=0 enz..).

Zo op het oog moet het volgens mij wel kloppen, maar ik zie iets over het hoofd. Is er iemand die het foutje ziet ? Alvast bedankt!

Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
$zoeken = '/\<TABLE ([^\\[]*)\>([^\\[]*)\<\/TABLE\>/g';

Met de 'g' i.p.v. 'e' aan het eind geef je namelijk aan dat hij meer dan slechts 1 instantie moet greppen/pakken.

Acties:
  • 0 Henk 'm!

Verwijderd

Voor zover ik weet kent de PCRE Library van PHP geen 'g' modifier, en als die al wel bekend zou zijn dan zou de 'e' nog steeds nodig zijn om de code in de replacement string uit te voeren.

Acties:
  • 0 Henk 'm!

  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 07-07 13:36
Verwijderd schreef op 15 april 2004 @ 13:48:
Voor zover ik weet kent de PCRE Library van PHP geen 'g' modifier, en als die al wel bekend zou zijn dan zou de 'e' nog steeds nodig zijn om de code in de replacement string uit te voeren.
G werkte inderdaad niet, ik gebruik nu [^>]* voor het eerste deel, ik zag ergens op internet dat ze dat ook gebruikten. Ik weet nu alleen niet wat ik precies gedaan heb, maar dat vind ik wel terug in de php manual als het goed is. Hij pakt nu wel $1 voor alle waarden die tussen <table> en </table> staan, maf.

In ieder geval bedankt!

De code die ik nu gebruik:
PHP:
1
2
$zoeken = '/\<TABLE [^>]*\>([^\\[]*)\<\/TABLE\>/ie';
$vervang = '\$this->convertHtmlTabel("$1")';