forked from Adleraci/adlerka.top
		
	
		
			
				
	
	
		
			62 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
function inlineLocalStylesFromHref($inputString) {
 | 
						|
    // Define the regular expression pattern to match <link> tags with href attribute for CSS files
 | 
						|
    $pattern = '/<link[^>]*?\srel=["\']?stylesheet["\'].*?\shref=["\']?\/(.*?)["\'][^>]*?>/i';
 | 
						|
 | 
						|
    // Use preg_replace_callback to replace matched link tags with inline styles
 | 
						|
    $outputString = preg_replace_callback($pattern, function($match) {
 | 
						|
        // Extract the href attribute value
 | 
						|
        $href = $match[1];
 | 
						|
 | 
						|
        $fname = $_SERVER['DOCUMENT_ROOT'] . '/' . $href;
 | 
						|
        echo "from $fname";
 | 
						|
        // Get the content of the local CSS file
 | 
						|
        $cssContent = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/' . $href);
 | 
						|
 | 
						|
        // Replace url() declarations in the CSS content with inline data
 | 
						|
        $cssContent = preg_replace_callback('/url\(["\']?\/(.*?)(?:[?#].*?)?["\']?\)/i', function($urlMatch) {
 | 
						|
            // Extract the URL value
 | 
						|
            $url = $urlMatch[1];
 | 
						|
            echo "Hehe: $url";
 | 
						|
 | 
						|
            // Get the content of the external file specified in the url()
 | 
						|
            $fileContent = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/' . $url);
 | 
						|
 | 
						|
            // Base64 encode the content for inline use
 | 
						|
            $base64Content = base64_encode($fileContent);
 | 
						|
 | 
						|
            // Create the inline data URI
 | 
						|
            $dataUri = 'url("data:application/octet-stream;base64,' . $base64Content . '")';
 | 
						|
 | 
						|
            return $dataUri;
 | 
						|
        }, $cssContent);
 | 
						|
 | 
						|
        // Create an inline style tag with the modified CSS content
 | 
						|
        return "<style>\n{$cssContent}\n</style>";
 | 
						|
    }, $inputString);
 | 
						|
 | 
						|
    return $outputString;
 | 
						|
}
 | 
						|
 | 
						|
function inlineScriptFromSrc($inputString) {
 | 
						|
    // Define the regular expression pattern to match <script> tags with src attribute
 | 
						|
    $pattern = '/<script.*?src=["\']\/(.*?)["\'].*?>\s*<\/script>/i';
 | 
						|
 | 
						|
    // Use preg_replace_callback to replace matched script tags with inline script
 | 
						|
    $outputString = preg_replace_callback($pattern, function($match) {
 | 
						|
        // Extract the src attribute value
 | 
						|
        $src = $match[1];
 | 
						|
 | 
						|
        // Get the content of the JavaScript file
 | 
						|
        $jsContent = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/' . $src);
 | 
						|
 | 
						|
        // Escape the JavaScript content for inline use
 | 
						|
        $escapedJsContent = htmlspecialchars($jsContent, ENT_QUOTES, 'UTF-8');
 | 
						|
 | 
						|
        // Create an inline script with the escaped content
 | 
						|
        return "<script>\n{$escapedJsContent}\n</script>";
 | 
						|
    }, $inputString);
 | 
						|
 | 
						|
    return $outputString;
 | 
						|
} |