Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аналог регулярки parse_url (оригинал глючит) 
:(
    Опции темы
masp
Дата 13.2.2010, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 22.2.2007

Репутация: нет
Всего: 2



оригинальный  вариант parse_url тоже глючит и не может нормально определить домен,
разыскал на http://php.net/manual/en/function.parse-url.php
аналогичную замену, и выходит что она тоже глючит,
 [host] => ews.miheeff.ru
а с parse_url вообще ничего не определяет
Код

<?php
$urls = 'http://news.miheeff.ru/language/Russian/website.lng';
$urls  = explode("/n",$urls);
//print_r($urls);

foreach ($urls as $k=>$v) {
    $v = trim($v);
    $u = j_parseUrl($v);
    echo '<pre>';
    print_r($u);
    
}


function j_parseUrl($url) {
  $r  = "(?:([a-z0-9+-._]+)://)?";
  $r .= "(?:";
  $r .=   "(?:((?:[a-z0-9-._~!$&'()*+,;=:]|%[0-9a-f]{2})*)@)?";
  $r .=   "((?:[a-z0-9-._~!$&'()*+,;=]|%[0-9a-f]{2})*)";
  $r .=   "(?::(\d*))?";
  $r .=   "(/(?:[a-z0-9-._~!$&'()*+,;=:@/]|%[0-9a-f]{2})*)?";
  $r .=   "|";
  $r .=   "(/?";
  $r .=     "(?:[a-z0-9-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+";
  $r .=     "(?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9a-f]{2})*";
  $r .=    ")?";
  $r .= ")";
  $r .= "(?:\?((?:[a-z0-9-._~!$&'()*+,;=:\/?@]|%[0-9a-f]{2})*))?";
  $r .= "(?:#((?:[a-z0-9-._~!$&'()*+,;=:\/?@]|%[0-9a-f]{2})*))?";
  preg_match("`$r`i", $url, $match);
  $parts = array(
            "scheme"=>'',
            "userinfo"=>'',
            "authority"=>'',
            "host"=> '',
            "port"=>'',
            "path"=>'',
            "query"=>'',
            "fragment"=>'');
  switch (count ($match)) {
    case 9: $parts['fragment'] = $match[8];
    case 8: $parts['query'] = $match[7];
    case 7: $parts['path'] =  $match[6];
    case 6: $parts['path'] =  $match[5] . $parts['path'];
    case 5: $parts['port'] =  $match[4];
    case 4: $parts['host'] =  $match[3];
    case 3: $parts['userinfo'] =  $match[2];
    case 2: $parts['scheme'] =  $match[1];
  }
  $parts['authority'] = ($parts['userinfo']?$parts['userinfo']."@":"").
                         $parts['host'].
                        ($parts['port']?":".$parts['port']:"");
  return $parts;
}
?>

PM MAIL ICQ   Вверх
segrey
Дата 13.2.2010, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 26.12.2006

Репутация: нет
Всего: нет



Код

$urls  = explode("/n",$urls);


тут ошибка
PM MAIL   Вверх
awdev
Дата 13.2.2010, 17:49 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 22.11.2009

Репутация: 1
Всего: 1



Да ошибки нет, вернет массив с длинной 1.

Вопрос в том, что в [host] => ews.miheeff.ru вас не устраивает?


PM MAIL   Вверх
sTa1kEr
Дата 14.2.2010, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



masp, может быть вам нужно просто обновить PHP?
Код

var_dump(parse_url("http://news.miheeff.ru/language/Russian/website.lng"));
/*
array(3) {
  ["scheme"]=>
  string(4) "http"
  ["host"]=>
  string(15) "news.miheeff.ru"
  ["path"]=>
  string(29) "/language/Russian/website.lng"
}

*/


Добавлено через 1 минуту и 20 секунд
Проверенно на PHP 5.2.11 и 5.3.1
PM MAIL   Вверх
masp
Дата 14.2.2010, 14:02 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 22.2.2007

Репутация: нет
Всего: 2



Код

Y:\xampp\php>php.exe -v
PHP 5.2.4 (cli) (built: Aug 30 2007 07:06:31)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
    with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technol
ogies
    with Zend Optimizer v3.3.0, Copyright (c) 1998-2007, by Zend Technologies


мдя, 
проверил на серваке(там всегда свежая), (PHP Version 5.2.6-1+lenny4)
при замене
$u = j_parseUrl($v);
на
$u = parse_Url($v);
аналогично глючит,

что 6-ю ПХП качать ?

тут что то не чисто ....

Да, меня смущает [path] => ews.miheeff.ru/language/Russian/website.lng



ХЕХ, и тут не спешать http://www.apachefriends.org/ru/xampp-windows.html
руками инсталить чтоли .....



Это сообщение отредактировал(а) masp - 14.2.2010, 14:46
PM MAIL ICQ   Вверх
Ипатьев
Дата 14.2.2010, 14:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



ни в жизнь не поверю, что стандартная функция возвращает тот же самый ews, что и кривая самописная функция.

masp, вы ответы, вообще, читаете?
вам ошибку указали. 
PM MAIL   Вверх
masp
Дата 14.2.2010, 14:54 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 22.2.2007

Репутация: нет
Всего: 2



ДАс, Спасибо, пробую обновить PHP, но всё равно не верится что б это был баг старых версий!
PM MAIL ICQ   Вверх
Fortop
Дата 14.2.2010, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(masp @  14.2.2010,  13:02 Найти цитируемый пост)
проверил на серваке(там всегда свежая), (PHP Version 5.2.6-1+lenny4)
при замене
$u = j_parseUrl($v);
на
$u = parse_Url($v);
аналогично глючит,

Врать не надо.

Код

D:\Web\php.binaries\php-5.2.6-nts-Win32>php.exe -v
PHP 5.2.6 (cli) (built: May  2 2008 19:37:32)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies

D:\Web\php.binaries\php-5.2.6-nts-Win32>php.exe -c -n l.php
string(5) "5.2.6"
array(3) {
  ["scheme"]=>
  string(4) "http"
  ["host"]=>
  string(15) "news.miheeff.ru"
  ["path"]=>
  string(29) "/language/Russian/website.lng"
}


Код

D:\Web\php.binaries\php-5.2.4-Win32>php.exe -v
PHP 5.2.4 (cli) (built: Aug 30 2007 07:06:31)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

D:\Web\php.binaries\php-5.2.4-Win32>php.exe -c -n l.php
string(5) "5.2.4"
array(3) {
  ["scheme"]=>
  string(4) "http"
  ["host"]=>
  string(15) "news.miheeff.ru"
  ["path"]=>
  string(29) "/language/Russian/website.lng"
}


Код

D:\Web\php.binaries\php-4.3.7-Win32>php.exe -v
PHP 4.3.7 (cgi-fcgi) (built: Jun  2 2004 15:49:31)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies

D:\Web\php.binaries\php-4.3.7-Win32>php.exe -c -n l.php
Content-type: text/html
X-Powered-By: PHP/4.3.7

string(5) "4.3.7"
array(3) {
  ["scheme"]=>
  string(4) "http"
  ["host"]=>
  string(15) "news.miheeff.ru"
  ["path"]=>
  string(29) "/language/Russian/website.lng"
}


Добавлено через 40 секунд
И собственно сам l.php
Код

<?php
var_dump(PHP_VERSION);
var_dump(parse_url('http://news.miheeff.ru/language/Russian/website.lng'));



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
segrey
Дата 14.2.2010, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 26.12.2006

Репутация: нет
Всего: нет



ужс какойто. отладка млять 3-х строчек кода уже вторые сутки, при том на ошибку сразу указали в первом посте. может лучше бросить программирование и заняться чем - нибудь полезным для государства?
PM MAIL   Вверх
sTa1kEr
Дата 14.2.2010, 20:29 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



masp, у вас в 3ей строке стоит не правильный слэш. Для спецсимволов используется обратный слэш, т.е. должно быть "\n";

segreyИпатьев, большинство ошибок бывает по невнимательности, и это нормальное явление. Но скажите, что мешает явно 
указать на опечатку, зачем устраивать из этого цирк?

Это сообщение отредактировал(а) sTa1kEr - 14.2.2010, 21:19
PM MAIL   Вверх
IZ@TOP
Дата 15.2.2010, 15:47 (ссылка)  | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(sTa1kEr @  14.2.2010,  21:29 Найти цитируемый пост)
segrey, Ипатьев, большинство ошибок бывает по невнимательности, и это нормальное явление. Но скажите, что мешает явно 
указать на опечатку, зачем устраивать из этого цирк?


Так оно веселее. Попинать невнимательных, может их поменьше станет? Хотя, это так же реально, как вежливые водители на дорогах XD


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0750 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.