На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ALXR
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
    > Вырезать текст
      нужно из URL адреса вырезать адрес непосредственно сайта

      Типа из
      http://trendforce.localhost/index.php?adr=acc
      получить
      http://trendforce.localhost/

      Подскажите плиз, как это сделать?

      Добавлено в :
      Я знаю что нужно притулить регулярные выражения, но с какого боку??? (Не могу разобраться с ними... :( )
        Считывай строку до 3-го слеша и всё...
          (http:\/\/.+?)\/
            Strory, и как это делать?

            ExpandedWrap disabled
              (http:\/\/.+?)\/

            Как я понимаю это пример регулярного выражения, которое выдирает то, что мне нужно. Так?

            А каким оператором это делать? eregi?
              ExpandedWrap disabled
                <script>
                s='http://trendforce.localhost/index.php?adr=acc';
                a=s.indexOf('/', 7);
                s1=s.slice(0, a);
                alert(s1);
                </script>
                Какой аналог
                ExpandedWrap disabled
                  indexOf('/', 7);
                в php?

                А что мой вариант?
                Я попробовал так:
                ExpandedWrap disabled
                  eregi ( 'http:\/\/.+?)\/ ', 'http://trendforce.localhost/index.php?adr=acc');

                Получил ошибку:
                Цитата
                Warning: eregi() [function.eregi]: REG_BADRPT: repetition-operator operand invalid in index.php on line 63


                Что делать? Как побороть?
                  Может это поможет?

                  ExpandedWrap disabled
                     
                    $url = "http://www.domain.ru/test/index.php?a=12&b=0";
                    preg_match("/^(http:\/\/)?([^\/]+)/i", $url, $matches);
                    echo $matches[0];
                  Сообщение отредактировано: Megamozg -
                    Megamozg, Да, работает.
                    У меня просьба, не мог бы ты объяснить, как работает эта строчка:
                    ExpandedWrap disabled
                      "/^(http:\/\/)?([^\/]+)/i


                    /^ - означает искать с начала строки.

                    (http:\/\/) - означает, что начало выражения долнжно иметь вид http://

                    ?([^\/]+) - означает, что после http:// может быть что угодно аж до символа /. Так?

                    А что обозначает "+" перед скобкой? То что символ не один, а может быть много. Да?

                    Предпоследний символ в строке / - обозначает окончание строки сравнения. Так?

                    А что значит "i" за скобками?

                    И ещё:
                    почему preg_match, указанный Магамозгом работает, а такая конструкция
                    eregi ( '/^(http:\/\/)?([^\/]+)/i', $url )
                    результата не даёт?
                    Сообщение отредактировано: Budda -
                      я второй день юзаю php и таких умностей не знаю :)

                      просто у меня есть учебник по пхп в .chm
                      там на eregi() была линка на ereg() откуда была линка на preg_match()

                      [quote]
                      Примечание: preg_match(), которая использует Perl-совместимый синтаксис регулярного выражения, работает часто быстрее, чем ereg().
                      [/quote]

                      + пример, который я содрал и чуть поменял :)
                      Оригинал примеров:
                      ExpandedWrap disabled
                         
                        Пример 1. Найти строку текста "php"
                        // "i" после ограничителя патэрна означает поиск без учёта регистра символов
                        if (preg_match ("/php/i", "PHP is the web scripting language of choice.")) {
                            print "A match was found.";
                        } else {
                            print "A match was not found.";
                        }
                         
                        Пример 2. Найти слово "web"
                        // \b в патэрне указывает на границу слова, поэтому совпадёт только отдельное слово
                        // "web", а не часть слов, как "webbing" или "cobweb"
                        if (preg_match ("/\bweb\b/i", "PHP is the web scripting language of choice.")) {
                            print "A match was found.";
                        } else {
                            print "A match was not found.";
                        }
                        if (preg_match ("/\bweb\b/i", "PHP is the website scripting language of choice.")) {
                            print "A match was found.";
                        } else {
                            print "A match was not found.";
                        }
                         
                         
                        Пример 3. Получение имени домена из URL
                        // получить имя хоста из URL
                        preg_match("/^(http:\/\/)?([^\/]+)/i",
                        "http://www.php.net/index.html", $matches);
                        $host = $matches[2];
                        // получить два последних сегмента имени хоста
                        preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches);
                        echo "domain name is: ".$matches[0]."\n";
                        [/quote]

                      извини, что не оправдал надежд :rolleyes:
                      что до "объяснить что к чему", уверен, что тут найдутся PHP-монстры, которые это сделают с удовольствием
                      Сообщение отредактировано: Megamozg -
                        Megamozg, а не мог бы ты мне этот учебник выслать? Я толкового мануала всё никак найти не могу..
                        Плиз: seredaom@ukrpost.net
                          Ушло, 1.57М
                            Цитата
                            Budda, 4.06.04, 15:30
                            /^ - означает искать с начала строки.

                            Ага
                            Цитата
                            Budda, 4.06.04, 15:30
                            (http:\/\/) - означает, что начало выражения долнжно иметь вид http://

                            В отдельности Да, но ты не верно разбил регЕксп.
                            В данном случае
                            (http:\/\/)? означает, что начало выражения долнжно иметь вид http:// или пустуй строки - '', ИМХО ? - тут не нужен.


                            Цитата
                            Budda, 4.06.04, 15:30
                            ?([^\/]+) - означает, что после http:// может быть что угодно аж до символа /. Так?

                            ([^\/]+) - да.

                            Цитата
                            Budda, 4.06.04, 15:30
                            А что обозначает "+" перед скобкой? То что символ не один, а может быть много. Да?

                            Ага.

                            Цитата
                            Budda, 4.06.04, 15:30
                            Предпоследний символ в строке / - обозначает окончание строки сравнения. Так?

                            /i - обозначает окончание регулярного выражения.
                            Цитата
                            Budda, 4.06.04, 15:30
                            А что значит "i" за скобками?

                            Игнорировать регистр букв.
                              Megamozg, может ссылку дашь на учебник?
                              Заранее спасибо
                                я пользуюсь вот этим: http://ru2.php.net/docs-echm.php мануалом в формате CHM, правда самой первой версией. Вполне доволен. Особенно нравится наличие User Conributed Notes
                                  Так разобрались или нет? :)

                                  ExpandedWrap disabled
                                     
                                    <?
                                    function ExtractServerName($InURL)
                                    {
                                    $result = preg_replace("/(.*)(http:\/\/.+?\/)(.*)/i", "\\2", $InURL);
                                    return $result;
                                    }
                                     
                                    echo ExtractServerName("http://trendforce.localhost/index.php?adr=acc");
                                    ?>


                                  Добавлено в :
                                  Настоятельно рекомендую: www.compway.h10.ru. Реальная пага, особенно - для начинающих. ;)
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,1052 ]   [ 16 queries used ]   [ Generated: 16.04.24, 09:00 GMT ]