Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.21.231.245] |
|
Сообщ.
#1
,
|
|
|
нужно из URL адреса вырезать адрес непосредственно сайта
Типа из http://trendforce.localhost/index.php?adr=acc получить http://trendforce.localhost/ Подскажите плиз, как это сделать? Добавлено в : Я знаю что нужно притулить регулярные выражения, но с какого боку??? (Не могу разобраться с ними... ) |
Сообщ.
#2
,
|
|
|
Считывай строку до 3-го слеша и всё...
|
Сообщ.
#3
,
|
|
|
(http:\/\/.+?)\/
|
Сообщ.
#4
,
|
|
|
Strory, и как это делать?
(http:\/\/.+?)\/ Как я понимаю это пример регулярного выражения, которое выдирает то, что мне нужно. Так? А каким оператором это делать? eregi? |
Сообщ.
#5
,
|
|
|
<script> s='http://trendforce.localhost/index.php?adr=acc'; a=s.indexOf('/', 7); s1=s.slice(0, a); alert(s1); </script> |
Сообщ.
#6
,
|
|
|
Какой аналог
indexOf('/', 7); А что мой вариант? Я попробовал так: 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 Что делать? Как побороть? |
Сообщ.
#7
,
|
|
|
Может это поможет?
$url = "http://www.domain.ru/test/index.php?a=12&b=0"; preg_match("/^(http:\/\/)?([^\/]+)/i", $url, $matches); echo $matches[0]; |
Сообщ.
#8
,
|
|
|
Megamozg, Да, работает.
У меня просьба, не мог бы ты объяснить, как работает эта строчка: "/^(http:\/\/)?([^\/]+)/i /^ - означает искать с начала строки. (http:\/\/) - означает, что начало выражения долнжно иметь вид http:// ?([^\/]+) - означает, что после http:// может быть что угодно аж до символа /. Так? А что обозначает "+" перед скобкой? То что символ не один, а может быть много. Да? Предпоследний символ в строке / - обозначает окончание строки сравнения. Так? А что значит "i" за скобками? И ещё: почему preg_match, указанный Магамозгом работает, а такая конструкция eregi ( '/^(http:\/\/)?([^\/]+)/i', $url ) результата не даёт? |
Сообщ.
#9
,
|
|
|
я второй день юзаю php и таких умностей не знаю
просто у меня есть учебник по пхп в .chm там на eregi() была линка на ereg() откуда была линка на preg_match() [quote] Примечание: preg_match(), которая использует Perl-совместимый синтаксис регулярного выражения, работает часто быстрее, чем ereg(). [/quote] + пример, который я содрал и чуть поменял Оригинал примеров: Пример 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] извини, что не оправдал надежд что до "объяснить что к чему", уверен, что тут найдутся PHP-монстры, которые это сделают с удовольствием |
Сообщ.
#10
,
|
|
|
Megamozg, а не мог бы ты мне этот учебник выслать? Я толкового мануала всё никак найти не могу..
Плиз: seredaom@ukrpost.net |
Сообщ.
#11
,
|
|
|
Ушло, 1.57М
|
Сообщ.
#12
,
|
|
|
Цитата 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" за скобками? Игнорировать регистр букв. |
Сообщ.
#13
,
|
|
|
Megamozg, может ссылку дашь на учебник?
Заранее спасибо |
Сообщ.
#14
,
|
|
|
я пользуюсь вот этим: http://ru2.php.net/docs-echm.php мануалом в формате CHM, правда самой первой версией. Вполне доволен. Особенно нравится наличие User Conributed Notes
|
Сообщ.
#15
,
|
|
|
Так разобрались или нет?
<? 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. Реальная пага, особенно - для начинающих. |
Сообщ.
#16
,
|
|
|
Вроде был положился нормально.
Не знаю, сколько проживет на ньюмейле, но выкладывать больше некуда. http://megamozg.nm.ru/php42.chm |
Сообщ.
#17
,
|
|
|
А задачка решалась очень просто!!!
Есть такая функция: parse_url: $strAddr = "http://username:password@hostname/path?arg=value#anchor"; $AddrURL = parse_url( $strAddr ); echo '<P>',$strAddr,':<BR>'; echo 'Protocol type: ',$AddrURL['scheme'],'<BR>'; echo 'host name: ',$AddrURL['host'],'<BR>'; echo 'User name: ',$AddrURL['user'],'<BR>'; echo 'Password ',$AddrURL['pass'],'<BR>'; echo 'Path to script: ',$AddrURL['path'],'<BR>'; echo 'Parameters: ',$AddrURL['query'],'<BR>'; echo 'fragment: ',$AddrURL['fragment'],'<BR>'; |
Сообщ.
#18
,
|
|
|
Цитата Budda,9.06.04, 16:43 А задачка решалась очень просто!!! Есть такая функция: parse_url: в очередной раз сталкиваюсь с тем, что в php за тебя уже все написано php-вещь! |
Сообщ.
#19
,
|
|
|
muk, думаю в перле аналогично
|