View Single Post
  #1  
Old 06-26-2004, 04:49 PM
 
NuAlpha NuAlpha is offline
 

X-Adept
  
Join Date: Aug 2003
Location: US
Posts: 598
 

Default HTML Catalog Cleaner - Removes excess white space

This script acts like a one time {strip} tag, removing all unnecessary white spaces from your .html files generated by the HTML Catalog, thus reducing the bandwidth needed for these files.

At the moment, I don't have a .tpl interface written for it, so you have to call it from your browser. This works on your existing catalog, though I am sure you could pull out the regex code and stick it into admin/html_catalog.php if your so inclined.

Here is the code. Put it in whatever directory you wish under whatever name you wish (.php extension of course)...
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>HTML Catalog Cleaner</title> </head> <body> <?php ###################################################### ## ## HTML Catalog Cleaner ## ## ###################################################### ## ## ## Strips every file in the HTML catalog directory ## ## of all excess white spaces. ## ###################################################### ## Version: 1.0.0 (6/26/2004) ## Last updated: 1.0.4 6/26/2004 # Function to Clean-up # ######################## function script_shutdown() { ini_set('max_execution_time', '30'); // Reset the maximum execution time. ini_set('max_input_time', '60'); // Reset the maximum input time. ob_implicit_flush(0); // Data should be kept in the buffer until ready. } register_shutdown_function('script_shutdown'); // Register the shutdown function. # Modify PHP Settings # ####################### ini_set('max_execution_time', '14400'); // Make the maximum execution/input time 4 hours so that the script doesn't time-out. ini_set('max_input_time', '14400'); ini_set('zlib.output_compression_level', 'Off'); // Turn off zlib compression, if On, to prevent Mozilla output problems. ob_implicit_flush(1); // Show the progress in the browser. echo "Stripping the HTML files of excess spaces... "; # Initialize variables. $dir = '/home/your-site-dir/path-to-xcart/catalog'; // Set the absolute directory path. $successes = 0; $failures = 0; $filesize['init'] = 0; $filesize['final'] = 0; $cnt['tmp'] = 0; // Newline counter $cnt['tot'] = 0; // Totals counter $pblr = 0; // Progress bar length reducer # Initialize settings. $regex = array(''=>'/[\t\n\r\f]+/', // Newlines and tabs ' '=>'/ +/', // Excess spaces ''=>'/ /i', // Additional space after non-breaking space '><'=>'/> </' // Space between HTML tags ); # Open the directory and store the file list. if (is_dir($dir)) { if ($dh = opendir($dir)) { # Iterate over file list. while (($filename = readdir($dh)) !== false) { // Use instead of scandir to skip some files. if (strpos($filename,'.htm') !== false) $file_list[] = $filename; } closedir($dh); // Close the directory. } # Perform specific operations on the files. foreach ($file_list as $file) { if (($fs_tmp = filesize($dir.DIRECTORY_SEPARATOR.$file)) !== false) $filesize['init'] += $fs_tmp; $file_contents = file_get_contents($dir.DIRECTORY_SEPARATOR.$file); foreach ($regex as $replace=>$finds) // Do each replacement. $file_contents = preg_replace($finds,$replace,$file_contents); $fp = fopen($dir.DIRECTORY_SEPARATOR.$file, 'w'); // Truncate file, then apply the modifications. if (!fwrite($fp,$file_contents)) { $failure_list[] = $file; // Log failures. $failures++; } else { $successes++; } fclose($fp); if (($fs_tmp = filesize($dir.DIRECTORY_SEPARATOR.$file)) !== false) $filesize['final'] += $fs_tmp; if ($pblr == 5) { // Modify this number to reduce the length of progress bar in case of a lot of files. echo '|'; // Show progess line. $cnt['tmp']++; // Increment the newline counter. $pblr = 0; // Reset pblr counter. } else { $pblr++; } $cnt['tot']++; // Increment totals counter. if ($cnt['tmp']==300) { echo ' '; $cnt['tmp']=0; } // Reset the counter. } } else die(''.$dir.' is not a directory!'); echo ' There were '.number_format($successes).' successful cleanings and '.number_format($failures).' failures out of a total of '.number_format($cnt['tot']).' files.</p>'; echo ' Your HTML Catalog files initially occupied '.number_format($filesize['init']).' bytes of disk space.'; echo ' They now occupy '.number_format($filesize['final']).' bytes of disk space.</p>'; if (isset($failure_list)) { echo ' The following files could not be written: '; foreach ($failure_list as $fail) echo ''.$fail.' '; } ?> </body> </html>

Let me know if you find any problems!
__________________
X-Cart Pro 4.5.5 Platinum
X-Payments 1.0.6
PHP 5.3.14
MySQL 5.1.68
Apache 2.2.23
Reply With Quote