92 lines
2.6 KiB
PHP
92 lines
2.6 KiB
PHP
<?php
|
|
/**
|
|
* Fix encoding issues and broken symbols in the project.
|
|
*/
|
|
|
|
$directory = __DIR__;
|
|
$extensions = ['php', 'html', 'css', 'js'];
|
|
|
|
// Define replacements for various corrupted sequences
|
|
$replacements = [
|
|
// Corrupted Trademark
|
|
'â„¢' => '™',
|
|
'MileTruth<superscript>™</superscript>' => 'MileTruth™',
|
|
'MileTruth<superscript>™</superscript>' => 'MileTruth™',
|
|
'MileTruth™' => 'MileTruth™',
|
|
|
|
// Corrupted quotes and dashes (UTF-8 bytes misinterpreted as ISO-8859-1 and then saved as UTF-8)
|
|
'–' => '–',
|
|
'—' => '—',
|
|
'’' => '’',
|
|
'“' => '“',
|
|
'â€' => '”',
|
|
'…' => '…',
|
|
'•' => '•',
|
|
|
|
// Corrupted spaces and symbols
|
|
'©' => '©',
|
|
' ' => ' ', // Often  + nbsp
|
|
'Â' => '', // Lone  artifact
|
|
'ðŸ' => '', // Broken emoji
|
|
|
|
// Fix existing trade entities if needed
|
|
'<sup>™</sup>' => '™',
|
|
'<superscript>™</superscript>' => '™',
|
|
'<superscript>™</superscript>' => '™',
|
|
];
|
|
|
|
/**
|
|
* Recursively find all files with specific extensions.
|
|
*
|
|
* @param string $dir
|
|
* @param array $extensions
|
|
* @return array
|
|
*/
|
|
function get_all_files(string $dir, array $extensions): array {
|
|
$files = [];
|
|
$items = scandir($dir);
|
|
foreach ($items as $item) {
|
|
if ($item == '.' || $item == '..' || $item == '.git' || $item == 'non-used' || $item == 'fix_encoding.php') continue;
|
|
$path = $dir . DIRECTORY_SEPARATOR . $item;
|
|
if (is_dir($path)) {
|
|
$files = array_merge($files, get_all_files($path, $extensions));
|
|
} else {
|
|
$ext = pathinfo($path, PATHINFO_EXTENSION);
|
|
if (in_array($ext, $extensions)) {
|
|
$files[] = $path;
|
|
}
|
|
}
|
|
}
|
|
return $files;
|
|
}
|
|
|
|
$files = get_all_files($directory, $extensions);
|
|
|
|
echo "Processing " . count($files) . " files...\n";
|
|
|
|
foreach ($files as $file) {
|
|
$content = file_get_contents($file);
|
|
if ($content === false) continue;
|
|
|
|
$original_content = $content;
|
|
|
|
// Apply replacements multiple times to handle nested issues
|
|
$changed = true;
|
|
while ($changed) {
|
|
$old_content = $content;
|
|
foreach ($replacements as $search => $replace) {
|
|
$content = str_replace($search, $replace, $content);
|
|
}
|
|
if ($old_content === $content) {
|
|
$changed = false;
|
|
}
|
|
}
|
|
|
|
if ($content !== $original_content) {
|
|
file_put_contents($file, $content);
|
|
echo "Fixed: $file\n";
|
|
}
|
|
}
|
|
|
|
echo "Done.\n";
|