Toon posts:

[js] code=code.replace() vraagje.

Pagina: 1
Acties:
  • 49 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik wil alle foo.location.href's uit een string 'code' filteren. Hoe doe ik dit?

Ik dacht: code = code.replace(/foo.location.href/g,'') maar die variabele werkt niet tussen de slashes van die regexp. Is dit eenvoudig op te lossen?

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 23:23

RM-rf

1 2 3 4 5 7 6 8 9

code:
1
2
var regExpression = new regExp(foo.location.href, "gi")
code.replace(regExpression,'')

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Verwijderd

Topicstarter
Beste RM-rf, bedankt voor je oplossing. 1 probleempje merk ik nu. Ik heb in mijn foo.location.href een ? staan. Hoe dit op te lossen?

Ik heb dus: http://domein/test.php?id=12 bijvoorbeeld als regexp en aangezien ? een bepaald teken is in een regexp gaat dit niet helemaal goed. Kan ik die escapen op een of andere manier?

Ik kan natuurlijk ook zoiets doen:
code:
1
2
3
4
while (code.match(foo.location.href))
{
        code = code.replace(foo.location.href,'');
}


Alleen werkt dit ook niet helemaal. Kan ik niet alle instanties van foo.location.href in een array zetten en deze daarna doorlopen en replacen?

[ Voor 32% gewijzigd door Verwijderd op 18-04-2003 11:27 ]


  • RM-rf
  • Registratie: September 2000
  • Laatst online: 23:23

RM-rf

1 2 3 4 5 7 6 8 9

die moet je escapen met een backslash '\'.
javascript zelf kent geen addslashes functie, dus dat zal je eerst met een andere rexExp moeten doen; iets als:
code:
1
2
3
var addslashes = new regExp("\?", "gi")
var replaceString = foo.location.href+""
replaceString.replace(addslashes, "\\\?")

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Verwijderd

Topicstarter
Ok, dat klinkt goed, maar hoe kan ik deze twee nu combineren tot 1? Ik word er helemaal leip van. :)

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 23:23

RM-rf

1 2 3 4 5 7 6 8 9

Verwijderd schreef op 18 April 2003 @ 11:31:
hoe kan ik deze twee nu combineren tot 1?
het verschil tussen een reguliere expressie ligt in het datatype tussen een String en de expressie;

van een String kun je een reguliere expressie-type maken dmv.
var expressie = new regExp(String): de variabele is dan geen String-variabele meer maar een expressie.

je kunt de twee stukje comineren door na eerst de addslashes uitgevoerd te hebben, op basis van de resulterende string de expressie aan te maken:
code:
1
replaceString = new regExp(replaceString)

en daarme dan de replace()-method uit te voeren

[ Voor 3% gewijzigd door RM-rf op 18-04-2003 11:48 ]

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Verwijderd

Topicstarter
Ah duidelijk, ik heb het nu zo:

code:
1
2
3
4
5
6
7
8
9
code= foo.document.body.outerHTML;
    
var addslashes = new regExp("\?", "gi");
var replaceString = foo.location.href+"";
replaceString.replace(addslashes, "\\\?");

replaceString = new regExp(replaceString);
code = code.replace(replaceString,'');
alert(code);


Maar volgens mij lukt het niet helemaal om er een expressie van te maken, aangezien hij uiteindelijk niets alert. Hij komt daar helemaal niet meer.

Verwijderd

Topicstarter
Hij hoeft helemaal niet geescaped te worden bedenk ik me net. Pas als je er een slash voorzet, dan geldt hij als reg_exp. Dus moet ik gewoon het volgende doen:

var url = new regExp(foo.location.href, "gi");
alert(url);
code = code.replace(url,'');

Vreemd is wel dat er geen popup komt bij de alert van die url. Ik heb dus het vermoeden dat die new RegExp niet helemaal werkt. Waar kan dat aan liggen?

Verwijderd

Topicstarter
Hmm, mag ik zo onvrijpostig zijn om dit topic weer naar boven te schoppen? Ik dacht namelijk een oplossing te hebben door het volgende te doen:

code:
1
2
url = foo.location.href;
foo.document.body.innerHTML=foo.document.body.innerHTML.split(url).join('');


Dit werkt helaas niet.
De bedoeling is dus nog steeds dat uit een stuk html alle url's gefilterd worden. Als ik namelijk een stuk htmlcode in een iframe gooi dan plaats hij automatisch (de browser?) voor alle href's in een <A> het domein.

Het domein is in de vorm van :
http://www.domein.nl/test/pagina.php?id_pagina=12

Ik heb het al met een replace() geprobeerd, maar op de een of andere manier lukt het me niet.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Gebruik de search maar even hier is zelfs laatst nog een topic over geweest.. zoek op 'url replace' oid.
Pagina: 1

Dit topic is gesloten.