02. august 2004 - 01:10Der er
26 kommentarer og 1 løsning
hastighed på switch case
Jeg har lavet et lille script til at erstatte æ, ø, å.. med æ, ø, å osv.. derfor ville jeg lige høre om der er en anden måde som er hurtigere end switch() og case ??
Jeg bruger Visual Basic til hverdags og der er Select Case det hurtigst, If .. Then er noget langsommer.
$length = strlen($strHtml); for ($i=0; $i <= $length; $i++) { $strOne = substr($strHtml, $i, 1); switch ($strOne) { case "æ": $strOut .= "æ"; break; case "Æ": $strOut .= "Æ"; break; case "ø": $strOut .= "ø"; break; case "Ø": $strOut .= "Ø"; break; case "å": $strOut .= "å"; break; case "Å": $strOut .= "Å"; break; default: $strOut .= $strOne; } } return $strOut;
Så bør du bruge str_replace() først, derefter lave det andet. Jeg ville i hvert fald ikke bruge en switch til det, men er jo svært at komme med løsning når jeg ikke kender resten. Hvad skal der laves bagefter ?
Generelt er Regular expressions lidt hurtigere, da de er grund-kodede, men jeg er ikke sikker på at det vil være tilfældet, når man skal lave en stribe erstatninger ...
Nu optimere den selv siden før den bliver sendt. ;-) Man skan dog stoppe den ved at bruge denne kode:
<?php ob_end_flush(); ?>
og der efter starte den igen med koden:
<?php ob_start("optimize"); ?>
For at gøre det hele lidt nemmere, kan man smide style og javascript i en fil, så behøver man ikke tænke på om der er noget som ikke må optimeres :-)
God fornøjelse...
------------ include.optimize.php ------------ <?php function optimize($strHtml) { # Her fjernes linjeskift og tab + dansk (æ, ø, å osv..) bliver rettet til entities tegn. $arrSearch = array("æ", "Æ", "ø", "Ø", "å", "Å", "\n", "\r", "\t"); $arrReplace = array("æ", "Æ", "ø", "Ø", "å", "Å", "", "", ""); $strHtml = str_replace($arrSearch, $arrReplace, $strHtml);
# Her erstatte vi 2 sammenhængende mellemrum, med 1 mellemrum $strHtml = preg_replace('=\s{2,}=', ' ', $strHtml);
# Efter vi har erstatte mellemrum.. ville der være et mellemrum # mellem ">" og "<", det fjerenes her. $strHtml = str_replace("> <", "><", $strHtml);
# Her fjernes alle kommentar. return preg_replace("=\<!--(.*?)\-->=is", "", $strHtml); } ?> ------------ include.optimize.php ------------
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.