parseurl помогите причесать

ELLO

Guest
parseurl помогите причесать

помогитте люди добрые причесать и оптимизировать ф-цию
или возможно есть у каво аналоги?
PHP:
function parseurl($str = false){
          
          if (!$str)return false;
          
          $arr["url"] = $str;
          
          if (!preg_match("/^(http):\/\/(.+?)((\/|$).*)/i", $str, $f)) {
               return false;
          }
          
          $arr["prot"] = $f[1];

          if (preg_match("/(.+?):(.+?)@(.+)/i", $f[2], $f2)) {
               $arr["user"] = $f2[1];
               $arr["pass"] = $f2[2];
               $arr["host"] = $f2[3];
          }else{
               $arr["host"] = $f[2];
          }

          if (preg_match("/(.+?):(\d{1,5})/i", $arr["host"], $f3)) {
               $arr["host"] = $f3[1];
               $arr["port"] = $f3[2];
          }

          $arr["path"] = $f[3];

          $arr["dir"] = false;

          if (preg_match("/([^\?]+)\/.*?(\?|)/i", $arr["path"], $f4)) {
               $arr["dir"] = $f4[1];
          }

          // имя файла
          if (preg_match("/.*?\/([^\/\?]+)(\?|)/i", $arr["path"], $f5)) {
               $arr["filename"] = $f5[1];
          }

          // get переменные
          if (preg_match("/^[^\?]+\?(.*)/i", $arr["url"], $f6)) {
               $res = explode ("&", $f6[1]);
               foreach($res as $v) {
                    $kv = explode("=", $v);
                    $arr["get"][urldecode($kv[0])] = urldecode($kv[1]);
               }
               //$arr["get"] = $f6[1];
          }
          
          $arr["uuu"] = $arr["prot"]."://".$arr["host"].$arr["dir"]."/".$arr["filename"];
          
          return $arr;
     }
ф-ция разбивает урл на переменные
но я тут чтото явно лишнего накосячил =(
возможно чтото и не учел даже
 

ELLO

Guest
Tor
за хлебом
Полукондуктор
она не все учитывает....
 
Что именно она не учитывает?
И если действительно не учитывает, то повторяю вопрос: какая такая злая судьба не дает воспользоваться встроенными функциями parse_str и parse_url, а потом "доразобрать" то, что не учитывает?
 

ELLO

Guest
Tor
извини ничего такого я не имел ввиду
просто вопрос глупый или глупо поставлен
если её написали значит нужна в данном случае чтобы
получить больше структурированной инфы из урла

-~{}~ 18.08.05 16:54:

Полукондуктор
дл яэтого опятьже придеться городить монстра который этуже строку пережевывает

-~{}~ 18.08.05 16:56:

попробуй разобрать строку моей ф-цией и parse_url
 
PHP:
function parseurl($url) {
  $arr = parse_url($url);
  if (preg_match('/(.+)\/([^\/]+)/',$arr['path'],$m)) {
    $arr['dir'] = $m[1];
    $arr['filename'] = $m[2];
  }
  parse_str($arr['query'],$arr['get']);
  foreach($arr['get'] as $key => $value) $arr['get'][$key] = urldecode($value);
  return $arr;
}
Чего не хватает?
 

Фанат

oncle terrible
Команда форума
попробуй разобрать строку моей ф-цией и parse_url
не надо говорить загадками и устраивать тут экзамены.
если ты можешь связно сказать, чем тебя конкретно не устраивает пара parse_str и parse_url - скажи.
Нет - тогда задавай свои вопросы самому себе.
 

ELLO

Guest
Полукондуктор
вроде пока все гуд!
чего не хватает вроде добавить мона...

пасиба за свежий взгляд на моё хозяйство


Фанат
ф-ция писалась давно причем в довесок к классу
поэтому и такие левые навороты
в свое время меня неустроила функция
parse_url поэтому была написана parseurl
я её модифицировал... но так как с виду по ней можно сказать что она левая я решил обратиться сюда
 

alexhemp

Новичок
ELLO

Ты так и не сказал ЧЕМ КОНКРЕТНО тебя штатная не устраивает.
 
Сверху