Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Отрезать от ссылки http://
 
 автор: Freddie_X   (19.05.2006 в 14:31)   письмо автору
 
 

У меня есть ссылка, к примеру http://www.softtime.ru.
Как мне от неё отрезать http:// и выписать только www.softtime.ru?
П.С. Попробовал вот так:
$row[4] = preg_replace("http://", "", $row[4]);
,
но выдает ошибку:
[url]Warning:[/url] preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in ...
Как поступить?

   
 
 автор: WebTech   (19.05.2006 в 14:57)   письмо автору
 
   для: Freddie_X   (19.05.2006 в 14:31)
 


<?php
$link 
"http://www.softtime.ru";
$link preg_replace("%(?:http://)?(.*)%i""\\1"$link);
?>

   
 
 автор: Freddie_X   (19.05.2006 в 15:08)   письмо автору
 
   для: WebTech   (19.05.2006 в 14:57)
 

Спасибо! Помогло! А если не сложно, объясните, что значат "%", "%i", "?:", "\\1"? А то сделал, и не знаю даже как это действует!
Спасибо!

   
 
 автор: WebTech   (19.05.2006 в 15:55)   письмо автору
 
   для: Freddie_X   (19.05.2006 в 15:08)
 

% - это ограничитель регулярного выражения. Может быть любым символом, кроме обратного слэша "\". Если сам ограничитель требуется использовать в регулярном выражении, его следует пометить обратным слэшем, например "\%" - будет обозначать сам символ "%".

i - это модификатор регулярного выражения, который указывает игнорировать регистр при обработке.

Последовательность ?: внутри подшаблона (выражение в круглых скобках), следующая перед набором символов исключает данный подшаблон из списка ссылок. В нашем случае подшаблон (http://) был не нужен, поэтому исключаем его из списка ссылок следующим образом (?:http://)

\\1 обозначает ссылку на первый подшаблон в регулярном выражении. В нашем выражении было два подшаблона, один из которых был исключен с помощью ?:, поэтому в списке ссылок остался один и номер у него 1 :-)

Функция preg_replace() в аргументе, который используется для замены, позволяет указывать ссылки на подшаблоны в регулярном выражении, которое используется в качестве образца для поиска.

Представим выражение типа http://www.softtime.ru в виде двух подшаблонов - (http://) и остальная часть, которая может быть представлена в виде любой последовательности символов. Т.е. можно записать как (.*). В конечном результате нам нужна именно остальная часть, а (http://) не нужен. Поэтому мы его исключаем из списка ссылок, а ссылаемся на подшаблон (.*), т.е.

$link =  preg_replace("%(?:http://)?(.*)%i", "\\1", $link)

   
 
 автор: Freddie_X   (19.05.2006 в 16:07)   письмо автору
 
   для: WebTech   (19.05.2006 в 15:55)
 

а что означает "?" между подшаблонами?

   
 
 автор: WebTech   (19.05.2006 в 16:58)   письмо автору
 
   для: Freddie_X   (19.05.2006 в 16:07)
 

? означает, что предыдущий символ или подшаблон может использоваться 0 или 1 раз.
Другие числители
* - использовать 0 или более раз
+ - использовать 1 или более раз
Я использовал этот числитель, потому что http:// может быть в адресе, а может и не быть. Т.е. запись вида www.softtime.ru тоже правомочна. Если http:// есть, то может встречаться 1 раз, не больше.

   
 
 автор: Freddie_X   (19.05.2006 в 17:12)   письмо автору
 
   для: WebTech   (19.05.2006 в 16:58)
 

Преогромное тебе спасибо! Я очень рад, что ты мне помог!!! =)))

   
 
 автор: xexe   (19.05.2006 в 15:05)   письмо автору
 
   для: Freddie_X   (19.05.2006 в 14:31)
 


<?
 $text 
"http://www.softtime.ru";
 
preg_match("/^(http:\/\/)?([^\/]+)/i"$text$out);
 echo 
$out[2];
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования