4

Is it possible using PHP Simple HTML DOM Parser to add a new script taga inside the head of a simple_html_dom object that has a full html from a home page?

i need to add some nodes inside that template, one of this nodes is a script tag with jquery and the other is a div with some text that i am pulling from my database.

i previously did something like this: (with DOMDocument )

$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML($remote);
$head = $dom->getElementsByTagName('head')->item(0);
$jquery = '$(document).ready(function(){ $("#feed_home").hide()});
  if (window.location.hash) {
    Destino = window.location.hash.replace(\'#!\', \'?\');

         window.location.href = window.location.href.split(\'#\')[0] + Destino;
}
';

$script = $dom->createElement('script', $jquery);
$script_type = $dom->createAttribute('type');

$script_type->value = 'application/javascript';
$script->appendChild($script_type);
$head->appendChild($script);
5
  • 1
    Why did you change from DOM to simple_html_dom? (Partly just curious, but may also allow someone to suggest a third alternative...) Commented Mar 28, 2013 at 22:41
  • because its so easy to select whatever you need from a full template that you have loaded inside a simple_hteml_dom object, just by using the css selectos.. like jquery. DOMdocument is really hard to follow.. at least for me Commented Mar 28, 2013 at 22:44
  • 2
    @FoNko in that case, you might like to consider the combination of the Symfony CssSelector and the DomCrawler libraries which allow you to do exactly that, but more powerful. Commented Mar 28, 2013 at 23:06
  • 1
    Or phpQuery, or any of the libxml based packages Gordon mentions here. Commented Mar 28, 2013 at 23:16
  • great, i will check on that later today... thanks guys!! Commented Mar 28, 2013 at 23:22

2 Answers 2

11

PHP Simple HTML DOM allows manipulation:

$html = str_get_html($rawhtml);
$inject  = '<script type="text/javascript">alert("Hello")</script>';
$html->find('head', 0)->innertext = $inject.$html->find('head', 0)->innertext;
echo $html;

http://simplehtmldom.sourceforge.net/manual.htm#frag_access_tips

Sign up to request clarification or add additional context in comments.

Comments

1

No, simple html dom doesn't do dom manipulation. With phpquery though you can do:

$doc->find('head')->append('<script src="foo"></script>');

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.