[php] preg_replace foutje? erg vreemde bug?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 12:47
ik heb net een preg_pelace gemaakt welke een woord kan zoeken in een stuk tekst en deze kan vervangen door de output van een functie, niks nieuws onder de zon.

Nu heb ik er 2 clausules aan toegevoegd zodat hij niet allerlei tags (<br>) gaat replacen (als je dus br zou gaat vervangen. en hij moet woorden die al een link zijn overslaan (<a href=blaat.php>Woord</a>

nu gebruik ik volgende preg_replace:
PHP:
1
2
3
$string=preg_replace("|(\b$word\b)(?![^<a]*>*<\/a>)(?![^<]*>)|ie",
"addlink($1,$id)",
$string);


Allemaal prachtig, de code werkt heel aardig,

Stukken tekst lopen goed door en alle voorkomens van $word worden verangen door het voorkomen (ivm hoofdletters), tags die <$word> laat hij staan en ook voorkomens van $word die al <a*>* </a> om zich heen hebben worden genegeerd.

Nu dacht ik voor de gein even een stukje tekst erin te proppen om te laten zien hoe cool het werkt, dus ik voer de volgende tekst in:
code:
1
test, alles werkt echt wel goed

Test moet hij vervangen.


En Bang, hele ding op z'n bek.
krijg allemaal errors, waaronder :
code:
1
Parse error: parse error, unexpected T_STRING in D:\sites\addwords\partners\runscan.php(59) : regexp code on line 1

Nu heb ik een en ander geprobeerd n kwam ik er achter dat de term (echt wel) de error triggerd, alleen ik heb geen idee waarom en hoe.

Als iemand wel waar dit probleem zich in mijn patern ophoud, zou ik dit graag van hem/haar willen horen :P

Kortom voor alle preg_replacers onder ons een echte puzzel.
Bij voorbaat dank, voor alle aandacht en de eventuele oplossing.

[ Voor 5% gewijzigd door killercow op 07-10-2003 16:19 ]

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

Verwijderd

die enige manier waarop het fout zou gaan is als hij de woorden "echt wel" ook moet replacen als 1 woord. Waarschijnlijk gaat je functie stuk door de spatie, denk je niet?

let us know

Acties:
  • 0 Henk 'm!

  • GewoonNico
  • Registratie: April 2003
  • Laatst online: 15-09 23:41
Op lijn 2 heb je staan

"addlink($1,$id)",

Vervang die $1, eens door $een

Dan werkt het waarschijnlijk wel.

Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 12:47
okey, ik heb het opgelost, de fout zat hem in het feit dat hij op het woord 'echt wel' zocht, en deze een spatie bevatte. Ik heb nu quotes om de $1 gezet, en ales werkt prefect.

partypas, Als ik $1 vervang door $een doet hij het natuurlijk helemaal niet, want de preg_replace vult de var $1 met de gevonden waarde en niet $een.

openkat.nl al gezien?