private function extractAppAndRewriteAssetsUrl($content, $assetprefix, $kept = array())
{
# On récupère les balises script et link, et on les réécrit
$parts = array();
preg_match('%<head>(?P<head>.*?)</head>.*?<body>(?P<body>.*?)</body>%smixu', $content, $parts);
/*
preg_replace_callback('%<link\s+.*?>%smix', function($match) use (&$kept) {
$kept[] = $match[0] . '</link>';
}, $parts['head']);
preg_replace_callback('%<script\s+.*?>%smix', function($match) use (&$kept) {
$kept[] = $match[0] . '</script>';
}, $parts['head']);
*/
$parts['body'] = preg_replace_callback('%<script\\s+.*?>%smix', function ($match) use(&$kept) {
$kept[] = $match[0] . '</script>';
}, $parts['body']);
$processUrls = function ($content, $assetprefix) {
return preg_replace_callback('%(?P<attr>(src|href))\\s*?=\\s*?(?P<quote>\'|")(?P<value>.*?)\\3%smix', function ($match) use($assetprefix) {
if (preg_match('%^(//|https?://)%', $match['value'])) {
return $match[0];
}
return $match['attr'] . "=" . $match['quote'] . $assetprefix . ltrim($match['value'], '/') . $match['quote'];
}, $content);
};
return array('html' => $processUrls($parts['body'], $assetprefix), 'assets' => $processUrls(implode("\n", $kept), $assetprefix));
}