как вы вырезаете домен и пути.

  • Автор темы Автор темы FryDay
  • Дата начала Дата начала

FryDay

Новичок
как вы вырезаете домен и пути.

нет у вас случаем готового кода как из строк вырезать домен, мыльницы и пути. типа у меня текст и там встречаются всякие:
www.domen.com
another.com/domen/kadabra.html
/script.php?df=dsa
[email protected]
 
parse_url - разбирает URL и возвращает его компоненты.
Описание

array parse_url (string url)

Эта функция возвращает ассоциативный массив, содержащий любые имеющиеся компоненты URL. Это могут быть:

scheme - например, http

host

port

user

pass

path

query - запрос, после знака вопроса ?

fragment - фрагмент, после знака хэша #
 
прошу прощения если не так выразил свой вопрос, мне надо удалить содерхимое частей урл из списка из строк.
p/s с pegexpom пока еще мучаюсь

-~{}~ 16.09.06 18:25:

что то php.net, в дауне?
 
С php.net все в порядке. Для удаления можешь использовать preg_replace с соответствующей регуляркой.
 
https?://(\w*:\w*@)?[-\w.]+(:\d+)?(/([\w/_.]*(\?\S+)?)?)?

эта регулярка определяет любые адреса
 
ну раз человек написал, что с регекспом мучается - значит не знает.
Лишний раз не повредит.
 
to Кром днем не откликался даже по ping'у. провайдер обморок пора ADSL поиметь или спутник.
to OlegFox спасибо за вариант, примного благодарен:)
 
$parse=parse_url("$URL");

А как теперь из $parse['host'] получить домен второго уровня?
 
вот тебе функция готовая вроде нормально пашет.
PHP:
function splitURL($url) {

    // Strip the host
    preg_match("/^.{1,10}:\/\/[^\/\?]{1,}(\/|$|\?){1}/", $url, $match);
    $match[0]=preg_replace("/^.{0,}:\/\//","",$match[0]);
    $match[0]=str_replace("?","",$match[0]);
    $match[0]=str_replace("/","",$match[0]);

    $url_parts[host]=$match[0];
    unset($match);

    // Get the path
    @preg_match("/".str_replace(".", '\.', $url_parts[host])."\/{1}[^\?]{0,}\//", $url, $match);
    $match[0]=str_replace($url_parts[host], "", $match[0]);

    $url_parts[path]=trim($match[0]);

    if ($url_parts[path]=="") {
      $url_parts[path]="/";
    }

    // Get the "file"
    preg_match("/[^\/]{1}\/[^\/\?]{1,}(\?|$)/", $url, $match);

    $match[0]=str_replace("/", "", $match[0]);
    $match[0]=str_replace("?", "", $match[0]);
    $match[0]=substr($match[0], 1);
    $file=$match[0];

    // Get the query
    preg_match("/\?.{0,}/", $url, $match);
    $query=$match[0];

    // Get the DOMAIN
    $parts=@explode(".", $url_parts[host]);
    if (count($parts)<=2) {
      $domain=$url_parts[host];
    }
    else {
      $pos=strpos($url_parts[host], ".");
      $domain=substr($url_parts[host], $pos+1);
    }

    // Get the protocol
    preg_match("/^.{0,10}\/\//", $url, $match);
    $protocol=$match[0];

    // Build array
    $r["host"]=$url_parts[host];
    $r["path"]=$url_parts[path];
    $r["file"]=$file;
    $r["query"]=$query;
    $r["domain"]=$domain;
    $r["protocol"]=$protocol;

    // .. and return it
    return $r;

  }

$url_parts=splitURL($url);

в результате по твоему требованию $url_parts[domain];
 
FryDay
это что за велосипед с квадратными колесами?

-~{}~ 19.09.06 21:34:

Term2
explode() + array_splice() + join()
 
to Wicked функция splitURL получает и возвращает хост, протокол, путь, файл, запрос, домен от ролученного URL в массиве. что то не так?
 
FryDay
... вообщем (делает часть того, что делает parse_url(), причем явно хуже) + (умеет вытаскивать домен n-1 уровня из хоста).

браво!
 
FryDay
не нужно на меня обижаться.
тебе нужно осознать, что такому неправильно парсящему урлы, плодящему Notice'ы, громоздкому, медленному решению, которое пытается имитировать работу _встроенной_ в php core функции, место может найтись только на помойке.
 
to wicked
я не обижался а вот после этого поста разозлисля. может это тебя код обидел, на обиженных воду возят:)... короче не рассказывай сказки венского леса... и дуй на помойку с осазнанием таго что санитарить надо, а не самовыражаться..
// и чем интересно тебе notice'ы не угодили
 
Сверху