Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > помогите разобраться с регуляркой


Автор: burakov 27.2.2010, 11:15
есть код нужно выбрать имя хоста

http://wm-help.net/my-articles/article/how-write-classes-in-php.htm
в данном случае должно получиться wm-help.net

Код


$url = 'http://wm-help.net/my-articles/article/how-write-classes-in-php.htm'; 
$pattern = '^http:\/\/(.+?)\/'; // в перле работает
if (ereg ($pattern, $url)) {

//ерег дает ошибку - не пропускает знак вопроса
// возможно ерег не перл совместимая функция 
// но какую тогда использовать ведь preg функции нету :)
// а мне не нужна замена preg_match, мне нужен поиск по условию
// как быть

}



Спасибо

Автор: skyboy 27.2.2010, 13:15
http://php.net/parse_url
Цитата

ведь preg функции нету smile

в смысле?
или на крайний случай вместо инвертирования нежадности "+?" сделай "[^/]+"
почему ругается на ".+?"
Цитата(burakov @  27.2.2010,  10:15 Найти цитируемый пост)
возможно ерег не перл совместимая функция

это как раз http://ua2.php.net/manual/en/book.pcre.php - perl-совместимый. а ereg - это POSIX.

Автор: g27 13.3.2010, 13:15
Код

<?
  // получаем www-адрес (имя хоста) из url
  $url = "http://www.php.net/download.html";
  preg_match("/^(http:\/\/)?([^\/]+)/i", $url, $matches);
  $host = $matches[2];
  echo("www-адрес: $host");
  echo("<br>");
  // получаем последние два сегмента имени хоста (доменное имя)
  preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
  echo "доменное имя: {$matches[0]}\n";
?>

как-то так

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)