Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > До собрать адрес


Автор: Silent_s 16.3.2009, 09:04
Есть массив адресов
Код

 "http://host.ru/forum",
   "viewforum_new.php?f=10",
   "http://host.ru/forum/profile_new.php?mode=register&agreed=true",
   "http://host.ru/forum/viewtopic_new.php?t=20",
    "http://host.ru/forum",
    "/forum/viewtopic_new.php?t=52445&page=1",
   "/forum/viewtopic_new.php?t=52445&page=2",
     "viewtopic_new.php?t=52445&all=last#end",
    "viewforum_new.php?f=10"


Как мне проверить что адрес без домена и как можно мне дополнить домен?
Адреса без домена могут быть со слешом и без...

Автор: azesmcar 16.3.2009, 09:08
Код

foreach ($arr as $a) {
   if (substr($a, 0, 7) == 'http://')
      //добавляем домейн
}


например так..можно и с помощью regexp

Автор: Silent_s 16.3.2009, 13:17
Сенкс
а как можно сделать с помощью регулярок?

Автор: azesmcar 16.3.2009, 13:19
Silent_s, не знаю  smile я их знаю на уровне копи-паста..нужно покопаться, но думаю тут без регулярок побыстрее будет..одна проверка всего..

Автор: MoLeX 16.3.2009, 13:20
azesmcar, 
а если адрес будет https://site.com?
то после обработки
Код

foreach ($arr as $a) {
   if (substr($a, 0, 7) == 'http://')
      //добавляем домейн
}


мы получим http://https://site.com
 smile 

Автор: azesmcar 16.3.2009, 13:25
MoLeX, не возражаю, но нигде не сказано что такое возможно, еще может быть wap...

можно и так
Код

foreach ($arr as $a) {
   if (substr($a, 0, 7) != 'http://' && substr($a, 0, 8) != 'https://')
      //добавляем домейн
}


Добавлено @ 13:27
или так  smile 
Код

$addrprefix = array('http://', 'https://');

foreach ($arr as $a) {
   foreach ($addrprefix as $prefix) {
      if (substr($a, 0, strlen($prefix)) != $prefix) {
         //добавляем домейн
      }
   }
}

Автор: enof 16.3.2009, 13:42
Код

foreach($arr as &$v)
    $v = preg_replace("#^(?!\w+://)(?:/)?(.*)$#u", "http://$domain/$1", $v);

Автор: azesmcar 16.3.2009, 13:50
Цитата

foreach($arr as &$v)
    $v = preg_replace("#^(?!\w+://)(?:/)?(.*)$#u", "http://$domain/$1", $v);


я этого никогда не выучу, хуже brainfuck -а  smile  smile 

Автор: enof 16.3.2009, 13:56
azesmcar, ниче сложного нет smile 

там пара лишних символов, без них это выглядит так:
Код

"#^(?!\w+://)/?(.*)$#u"

Автор: azesmcar 16.3.2009, 14:00
Цитата

azesmcar, ниче сложного нет smile 

да знаю, все легко если учить, просто не так уж сильно надо пока что..до сих пор копипастом вроде бы обходился, стандартных проверок в интернете полно

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)