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

FryDay

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

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

collapse

Новичок
parse_url - разбирает URL и возвращает его компоненты.
Описание

array parse_url (string url)

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

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

host

port

user

pass

path

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

fragment - фрагмент, после знака хэша #
 

FryDay

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

-~{}~ 16.09.06 18:25:

что то php.net, в дауне?
 

Кром

Новичок
С php.net все в порядке. Для удаления можешь использовать preg_replace с соответствующей регуляркой.
 

OlegFox

Новичок
https?://(\w*:\w*@)?[-\w.]+:)\d+)?(/([\w/_.]*(\?\S+)?)?)?

эта регулярка определяет любые адреса
 

OlegFox

Новичок
ну раз человек написал, что с регекспом мучается - значит не знает.
Лишний раз не повредит.
 

FryDay

Новичок
to Кром днем не откликался даже по ping'у. провайдер обморок пора ADSL поиметь или спутник.
to OlegFox спасибо за вариант, примного благодарен:)
 

Term2

Новичок
$parse=parse_url("$URL");

А как теперь из $parse['host'] получить домен второго уровня?
 

FryDay

Новичок
вот тебе функция готовая вроде нормально пашет.
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];
 

Wicked

Новичок
FryDay
это что за велосипед с квадратными колесами?

-~{}~ 19.09.06 21:34:

Term2
explode() + array_splice() + join()
 

FryDay

Новичок
to Wicked функция splitURL получает и возвращает хост, протокол, путь, файл, запрос, домен от ролученного URL в массиве. что то не так?
 

Wicked

Новичок
FryDay
... вообщем (делает часть того, что делает parse_url(), причем явно хуже) + (умеет вытаскивать домен n-1 уровня из хоста).

браво!
 

FryDay

Новичок
хмм to Wicked спасибо что поддержал, меня вполне устраивает!
 

Wicked

Новичок
FryDay
не нужно на меня обижаться.
тебе нужно осознать, что такому неправильно парсящему урлы, плодящему Notice'ы, громоздкому, медленному решению, которое пытается имитировать работу _встроенной_ в php core функции, место может найтись только на помойке.
 

FryDay

Новичок
to wicked
я не обижался а вот после этого поста разозлисля. может это тебя код обидел, на обиженных воду возят:)... короче не рассказывай сказки венского леса... и дуй на помойку с осазнанием таго что санитарить надо, а не самовыражаться..
// и чем интересно тебе notice'ы не угодили
 
Сверху