V předchozím vlákně je výsledek testu při větvení, kdy získáme a zpracujeme URL a poté větvíme.
Nyní výsledky testu zpracovávání URL:
URL: /inzerce/blabla/... ==> chceme získat /inzerce/
Opět provedeno vše 50 000×
1) 0.1779 s; hodně dlouhá url: ~ (neměřitelný rozdíl) ==========================================================
preg_match('/^(\/[a-zA-Z0-9\-\.]*\/)/', $url, $u);
2) 0.1772 s; hodně dlouhá url: 0.3965 s
==========================================================
preg_match('/^(\/.*\/)/', $url, $u);
3) 0.1017 s; hodně dlouhá url: 0.2577 s
==========================================================
$pos = mb_strpos($url, '/', 1);
if ($pos !== false) {
$u = mb_substr($url, 1, $pos - 1);
}
4) 0.0839 s; hodně dlouhá url: ~ (neměřitelný rozdíl) ==========================================================
$pos = strpos($url, '/', 1);
if ($pos !== false) {
$u = substr($url, 1, $pos - 1);
}
5) 0.0897 s; hodně dlouhá url: 0.1226 s
==========================================================
$u = explode('/', $url, 3); // $u[1]
Řešení č. 4 je tedy nejefektivnější, rychlost zpracování je konstantní i při dlouhých URL a je nejrychlejší.
Testované regulární výrazy byly pomalejší (možno ještě zkusit najít optimálnější reguláry).