Ik wil <a>-tags plaatsen om $sWord in de string $sHTML, echter alleen als:
1) $sWord geen tag is of een attribute van een tag, zie het woord 'type' in
2) $sWord staat niet tussen een <a> en een </a> (is dus zelf geen link)
Nu heb ik in PHP de volgende regular expression gefabriceerd:
Probleem: deze needle houdt alleen rekening met de eerste voorwaarde, niet met de tweede. Ik heb geen idee hoe ik de tweede voorwaarde in kan bouwen (twee negative lookaheads?)
Iemand een idee?
1) $sWord geen tag is of een attribute van een tag, zie het woord 'type' in
HTML:
1
2
3
4
5
| <!-- mag niet --> <input type="checkbox" value="1"> <!-- mag wel --> <p>Type 1</p> |
2) $sWord staat niet tussen een <a> en een </a> (is dus zelf geen link)
HTML:
1
2
| <!-- mag niet --> <a href="home.htm">Type</a> |
Nu heb ik in PHP de volgende regular expression gefabriceerd:
PHP:
1
2
3
4
5
6
| /* toelichting: de (s?) is voor de meervoudsvorm van engelse woorden */ $reNeedle = "/(?!<.*?)\b(".$sWord.")(s?)\b(?![^<>]*?>)/si" $sHTML = preg_replace($reNeedle, '<a>$1$2</a>', $sHTML); |
Probleem: deze needle houdt alleen rekening met de eerste voorwaarde, niet met de tweede. Ik heb geen idee hoe ik de tweede voorwaarde in kan bouwen (twee negative lookaheads?)
Iemand een idee?
[ Voor 0% gewijzigd door Rekcor op 03-10-2007 16:03 . Reden: tiepvaud ]