- substr: documentation ( source)
<?php
$html = <<<HTML
<div>
<img src="icons/example.svg">
<img src="{{asset('icons/example.svg')}}"/>
<a href="http://www.example.com">a link</a>
<link href="css/example.css">
<link href="{{asset('css/example.css')}}"/>
<iframe src="http://www.example.com/default.htm"></iframe>
</div>
HTML;
$dom = new DOMDocument();
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//img/@src | //link[not(starts-with(@href,"{{asset"))]/@href') as $attr) {
$attr->value = "{{asset('" . $attr->value . "')}}";
}
echo substr($dom->saveXML(), 38); // remove the auto-generated xml tag from the start