Toon posts:

[js]Regex om & te vervangen in &

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer door middel van Regular Expressions & te vervangen door & in hyperlinks op een pagina. (Deze fouten worden door een overactieve html-parser gegenereerd.)

Nu heb ik daarvoor de volgende functie:

JavaScript:
1
2
3
4
5
6
7
function repairURI(doc)
{
    for (var i=0;i<doc.getElementsByTagName('a').length;i++)
    {
        doc.getElementsByTagName('a')[i].href.replace(/&amp;/gi,'&');
    }
}


Waarbij doc een referentie is naar het betreffende document.

Het probleem is dat er helemaal niets gebeurt. Ik krijg geen javascript fouten, en de functie wordt goed aangeroepen. De fout zit dus in de regex. Alleen ik zie niet waar.

Voor zover ik weet hebben & en ; geen speciale betekenis in Regular Expressions. Wat doe ik fout?

Verwijderd

Waarom zou in de href property van het link object nog een character entity reference voorkomen? Een parser hoort die keurig naar & om te zetten.

[edit]
Mag ik dan uit je tekst opmaken dat er &amp;amp; in je broncode staat?

Je moet er in elk geval rekening mee houden dat de replace methode van het String object een string teruggeeft. De inhoud van de originele string verandert niet. Je zou dus eerder de volgende code verwachten:

JavaScript:
1
2
var el = doc.getElementsByTagName('a')[i];
el.href = el.href.replace(/&amp;/gi,'&');

[ Voor 64% gewijzigd door Verwijderd op 13-07-2005 21:13 ]


Verwijderd

Topicstarter
Verwijderd schreef op woensdag 13 juli 2005 @ 21:09:
Waarom zou in de href property van het link object nog een character entity reference voorkomen? Een parser hoort die keurig naar & om te zetten.
Dat weet ik. Alleen dat gebeurt dus niet.

De parser maakt dus soms dergelijke code:

HTML:
1
<a href="http://xs.to/xs.php?h=xs37&amp;amp;d=05283&amp;amp;f=Puike_brief.jpg" target="_blank">


Dan is de href property dus: http://xs.to/xs.php?h=xs37&d=05283&f=Puike_brief.jpg

En die wil ik dus herstellen naar een werkende URL.

edit:
Hmm, ik zie dat GoT slim genoeg is om dat automatisch te herstellen. Heel erg goed, en dat wil ik dus namaken in javascript

[ Voor 15% gewijzigd door Verwijderd op 13-07-2005 21:13 ]


Verwijderd

Topicstarter
Af en toe hè, dan ben ik best een idioot. :P

Ik ben dus inderdaad vergeten dat de replace functie geen echte replace doet, maar een string teruggeeft.

Probleem opgelost. Bedankt Cheatah.