Goedendag,

Ik heb een website en wil een script alleen laden als een bepaald woord (bijvoorbeeld "phphulp") voorkomt tussen de body tags op de betreffende webpagina.

if (preg_match("/phphulp/", $subject)) {
  // script laden
}


Mijn vraag, hoe moet ik de $subject instellen? De $subject moet dus de body content zijn toch? Maar hoe geef ik de opdracht om tussen body tags te zoeken?

Deze pagina is overigens variabel, dus een (vaste) URL in de $subject is geen optie.

Guido
Ik kan je ook nog niet helemaal volgen, maar ik zie twee varianten:

1) Je laadt een andere pagina, en aan de hand daarvan moet er een script geladen/toegevoegd worden. Dit zou je op deze manier kunnen doen:


$andere_html = file_get_contents($url_andere_pagina);
if (preg_match("/<body>.*phphulp.*<\\/body>/s", $andere_html)){
  //voeg script in
}


Als je $url_andere_pagina je eigen pagina is, dan gaat dit niet werken, want dan blijft ie zichzelf aanroepen (als een hond die z'n eigen staart achterna zit).

2) Je genereert een pagina, maar wilt een script alleen laden als je bepaalde functionaliteit in de body hebt.

Ook hier kun je weer meerdere kanten op:
a) Je kunt de beslissing of je die 'bepaalde functionaliteit' nodig hebt naar voren halen, zodat je het script meteen in de <head> toe kunt voegen.
b) Je kunt bijhouden of je die 'bepaalde functionaliteit' invoegt, en het script dan net voor de </body> invoegen.
c) Je kunt via javascript (jQuery) onload controleren of je die 'bepaalde functionaliteit' ingevoegd hebt, en het betreffende script dan laden via jQuery.getScript().
Hallo Rob,

Een beetje late reactie..

1) Het werkte idd niet omdat het dezelfde pagina was; hij bleef laden.

Wat ik wou was de 2e optie, maar ik had me er inmiddels bij neer gelegd dat het niet eenvoudig zou worden dit te bouwen. Ik ga me eens in jouw suggesties verdiepen.. thanks.

Guido

ps. het betreft een WordPress plugin (een contact-formulier) en het CSS stylesheet hoeft alleen geladen te worden als het contact-formulier op een pagina staat. Nu wordt hij op iedere pagina geladen.
Als je specifiek door de structuur van een HTML-document wilt zoeken. Dan kan je prima gebruik maken van DOMDocument().

Reageren