I don't know DOM very well. I can split html code into an array by paragraph and insert new lines, just not at the beginning. When I do $p_nodes->item(0)->insertBefore, it inserts the line after item(0). Here's an overview:
<I want to insert a line here>
<p> line one </p>
<I can insert a line here>
<p> line two</p>
etc
Here's the php code:
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML($html);
$dom->encoding = 'UTF-8';
$content_xpath = new DOMXPath($dom);
//Find paragraphs
$p_nodes = $content_xpath->evaluate('//p');
//Add the new element
$insertLine = $dom->createdocumentFragment();
$insertLine->appendXML('<div>hello</div>');
//$p_nodes->item(0)->appendChild($insertLine); //this inserts the new line after line 1
$p_nodes->item(0)->insertBefore($insertLine); //this inserts after, same as appendchild
$html = $dom->saveHTML();
Note: this code is greatly simplified- I would love to just concatenate the new line, but trust me- its not possible, it needs to be done with DOM.