stylehub/lib/inliner.php

58 lines
2.2 KiB
PHP
Raw Normal View History

2024-02-04 10:21:56 +01:00
<?php
2024-02-04 10:37:06 +01:00
2024-02-04 10:21:56 +01:00
function inlineLocalStylesFromHref($inputString) {
// Define the regular expression pattern to match <link> tags with href attribute for CSS files
2024-02-04 10:37:06 +01:00
$pattern = '/<link[^>]*?\srel=["\']?stylesheet["\'].*?\shref=["\']?\/(.*?)["\'][^>]*?>/i';
2024-02-04 10:21:56 +01:00
// Use preg_replace_callback to replace matched link tags with inline styles
2024-02-04 10:24:52 +01:00
$outputString = preg_replace_callback($pattern, function($match) {
2024-02-04 10:21:56 +01:00
// Extract the href attribute value
2024-02-04 10:37:06 +01:00
$href = $match[1];
2024-02-04 10:21:56 +01:00
2024-02-04 10:28:34 +01:00
$fname = $_SERVER['DOCUMENT_ROOT'] . '/' . $href;
2024-02-04 10:33:54 +01:00
echo "from $fname";
2024-02-04 10:21:56 +01:00
// Get the content of the local CSS file
2024-02-04 10:24:52 +01:00
$cssContent = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/' . $href);
2024-02-04 10:21:56 +01:00
2024-02-04 10:39:04 +01:00
// Replace url() declarations in the CSS content with updated paths
2024-02-04 10:34:57 +01:00
$cssContent = preg_replace_callback('/url\(["\']?\/(.*?)(?:[?#].*?)?["\']?\)/i', function($urlMatch) {
2024-02-04 10:32:08 +01:00
// Extract the URL value
$url = $urlMatch[1];
2024-02-04 10:39:04 +01:00
// Modify the path as needed
$modifiedPath = '/new/path/' . $url;
2024-02-04 10:32:08 +01:00
2024-02-04 10:39:04 +01:00
// Create the updated url() declaration
$updatedUrlDeclaration = 'url("' . $modifiedPath . '")';
2024-02-04 10:32:08 +01:00
2024-02-04 10:39:04 +01:00
return $updatedUrlDeclaration;
2024-02-04 10:32:08 +01:00
}, $cssContent);
// Create an inline style tag with the modified CSS content
2024-02-04 10:21:56 +01:00
return "<style>\n{$cssContent}\n</style>";
}, $inputString);
return $outputString;
}
function inlineScriptFromSrc($inputString) {
// Define the regular expression pattern to match <script> tags with src attribute
2024-02-04 10:24:52 +01:00
$pattern = '/<script.*?src=["\']\/(.*?)["\'].*?>\s*<\/script>/i';
2024-02-04 10:21:56 +01:00
// Use preg_replace_callback to replace matched script tags with inline script
2024-02-04 10:24:52 +01:00
$outputString = preg_replace_callback($pattern, function($match) {
2024-02-04 10:21:56 +01:00
// Extract the src attribute value
$src = $match[1];
// Get the content of the JavaScript file
2024-02-04 10:24:52 +01:00
$jsContent = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/' . $src);
2024-02-04 10:21:56 +01:00
// 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;
}