[PHP] Reguliere Expressies

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 128048

Topicstarter
Ik heb een zoekfunctie dat HTML bestanden (welke worden ge-include in een content gedeelte, afhangende van $_GET['pg']) doorzoekt. Dit werkt allemaal wel. Er wordt een overzicht met resultaat pagina's getoont waar met op kan klikken. Bij het klikken wordt ook de query onthouden. Hiermee wil ik een gezochte string binnen de content voorzien van een achtergrondkleur, zodat deze eruit springt.
Dit werkt allemaal tot dusver. Alleen heb ik volgend probleem:

Bij het vervangen van de query binnen de html pagina worden ook eventuele html tags meegenomen. Hierdoor wordt de waarde van de tag er omheen (de replace gooit een span om de query) opgeheven en de pagina lelijk.

Nu weet ik dat dit waarschijnlijk met reguliere expressies op te lossen is mbv ereg_replace ofzo, maar kom er niet uit. Weet iemand hoe ik bij het replacen de content kan replacen, BEHALVE wanneer het zich binnen html tags bevindt?

voorbeeld:

<p>dit is een stuk tekst op de home pagina dat wordt doorzocht met een eventuele <a href="?pg=home">link</a> erbij.

Zoeken op 'home' levert momenteel op:

<p>dit is een stuk tekst op de <span style="background-color:#CCCCCC">home</span> pagina dat wordt doorzocht met een eventuele <a href="?pg=<span style="background-color:#CCCCCC">home</span>">link</a> erbij.

maar dit moet zijn:

<p>dit is een stuk tekst op de <span style="background-color:#CCCCCC">home</span> pagina dat wordt doorzocht met een eventuele <a href="?pg=home">link</a> erbij.

PLZ help

Acties:
  • 0 Henk 'm!

Anoniem: 103927

PHP:
1
$html = preg_replace("'(?!<.*?)$zoektext(?![^<>]*?>)'si", "<span class=\"highlight\">\\0</span>", $html


Met deze regular expression kan je tekst vervangen die niet in html tags staan.

Acties:
  • 0 Henk 'm!

Anoniem: 128048

Topicstarter
TNX...werkt helemaal naar behoren _/-\o_

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 11:26

crisp

Devver

Pixelated

Niet alles wat tussen < en > staat is noodzakelijk een tag; dit is valid HTML:
HTML:
1
2
3
<p>
    < een stukje tekst >
</p>


verder zou ik $zoektext door preg_quote halen ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Blackbird-ce
  • Registratie: September 2005
  • Laatst online: 06-06 07:26
crisp schreef op maandag 24 april 2006 @ 12:14:
Niet alles wat tussen < en > staat is noodzakelijk een tag; dit is valid HTML:
HTML:
1
2
3
<p>
    < een stukje tekst >
</p>


verder zou ik $zoektext door preg_quote halen ;)
Hoor je dat niet te encoden?
code:
1
2
3
<p>
    &lt; een stukje tekst &gt;
</p>
o.i.d.?

[ Voor 22% gewijzigd door Blackbird-ce op 24-04-2006 13:33 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 11:26

crisp

Devver

Pixelated

Blackbird-ce schreef op maandag 24 april 2006 @ 13:32:
[...]


Hoor je dat niet te encoden?
code:
1
2
3
<p>
    &lt; een stukje tekst &gt;
</p>
o.i.d.?

nee; als het geen ambiguiteiten oplevert hoeven speciale karakters niet encoded te worden :)

[ Voor 3% gewijzigd door crisp op 24-04-2006 13:38 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
crisp schreef op maandag 24 april 2006 @ 13:37:

[...]

nee; als het geen ambiguiteiten oplevert hoeven speciale karakters niet encoded te worden :)
Kun je het imho toch beter wel doen..

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 11:26

crisp

Devver

Pixelated

Grijze Vos schreef op maandag 24 april 2006 @ 14:11:
[...]


Kun je het imho toch beter wel doen..
Da's wat anders ;)

Intentionally left blank

Pagina: 1