извлечь из полного адреса страницы адрес толкьо домена

12
MK
На сайте с 18.08.2005
Offline
126
#11

Source string: www.controlstyle.ru/dir1/dir2/di3/file.htm?param1=value1&param2=value2&param3=value3


Preg_match time, s*106: 87.0227813721[www.controlstyle.ru]
Parse_url time, s*106: 40.0543212891[www.controlstyle.ru]
Explode time, s*106: 33.1401824951[www.controlstyle.ru]
<?php

function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$source = 'http://www.controlstyle.ru/dir1/dir2/di3/file.htm?param1=value1&param2=value2&param3=value3';

$mt_preg = getmicrotime();
$result = array();
preg_match('#^http://(.*)/.*$#Uis', $source, $result);
$r[1] = $result[1];
$mt_preg = (getmicrotime()-$mt_preg) * 1000000;

$mt_pars = getmicrotime();
$result = parse_url($source);
$r[2] = $result['host'];
$mt_pars = (getmicrotime()-$mt_pars) * 1000000;

$mt_subs = getmicrotime();
$source = str_replace('http://', '', $source);
$result = explode('/', $source);
$r[3] = $result[0];
$mt_subs = (getmicrotime()-$mt_subs) * 1000000;



echo '<b>Source string:</b> ' . $source . "<br /><br />";
echo '<b>Preg_match time, s*10<sup>6</sup>:</b> ' . $mt_preg . "[".$r[1]."]<br />";
echo '<b>Parse_url time, s*10<sup>6</sup>:</b> ' . $mt_pars . "[".$r[2].']<br />';
echo '<b>Explode time, s*10<sup>6</sup>:</b> ' . $mt_subs . "[".$r[3].']<br />';

echo highlight_file('1.php', true);

?>

Как вариант, можно и так

$source = str_replace('http://', '', $source);

$result = explode('/', $source);

$host = $result[0]; :)

нет
D
На сайте с 21.06.2006
Offline
168
#12

Признаю свое поражение 😒

Если берется 1 хост, прег проигрывает, потому что компилирует регексп.

Но если у нас список из 100 урлов, то preg_match уверенно догоняет и разница получается не такая значительная(порядка 20%).

Appstorespy - платформа анализа мобильных сторов | Publa.io - готовая инфраструктура для приема платежей и оплаты рекламных кабинетов в бурже
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий