PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 15
hiddensy Отправлено: 08 Ноября, 2014 - 17:34:19 • Тема: Разбить слово на слоги. Переписать в функцию. • Форум: Напишите за меня, пожалуйста

Ответов: 1
Просмотров: 67
Всем привет.
Помогите переписать javascript в функцию на php, что-бы на выходе было слово разбитое на слоги.

Спойлер (Отобразить)


В сети кроме этого примера ничего не нашел нормального. Если кто знает примеры реализации для php подскажите или помогите переписать приведенный выше код с javascript на php
hiddensy Отправлено: 29 Октября, 2014 - 13:35:32 • Тема: Как переписать функцию в рекурсивную • Форум: Вопросы новичков

Ответов: 4
Просмотров: 189
Panoptik пишет:
PHP:
скопировать код в буфер обмена
  1. function perebor($arr, $prefix = '') {
  2.     $result = array();
  3.     $prefix .= $prefix ? ' ' : '';
  4.     foreach($arr as $key => $val) {
  5.         $result[] = $prefix . $key;
  6.         if(is_array($val)) {
  7.             $result = array_merge($result, perebor($val, $prefix . $key));
  8.         }
  9.     }
  10.     return $result;
  11. }


Спасибо огромное, выручили.
hiddensy Отправлено: 29 Октября, 2014 - 13:25:04 • Тема: Как переписать функцию в рекурсивную • Форум: Вопросы новичков

Ответов: 4
Просмотров: 189
Panoptik пишет:
какой хоть результат выводится?


PHP:
скопировать код в буфер обмена
  1. (
  2.     [0] => эксперт
  3.     [1] => эксперт авто
  4.     [2] => эксперт авто Москва
  5.     [3] => эксперт волос
  6.     [4] => эксперт волос отзывы
  7.     [5] => эксперт волос эвалар
  8.     [6] => эксперт волос эвалар отзывы
  9.     [7] => эксперт журнал
  10.     [8] => эксперт интернет
  11.     [9] => эксперт интернет магазин
  12.     [10] => эксперт медицинский
  13.     [11] => эксперт медицинский центр
  14.     [12] => эксперт работа
  15.     [13] => эксперт по
  16.     [14] => эксперт по ДТП
  17. )
hiddensy Отправлено: 29 Октября, 2014 - 13:10:14 • Тема: Как переписать функцию в рекурсивную • Форум: Вопросы новичков

Ответов: 4
Просмотров: 189
Всем привет.
есть такой код
PHP:
скопировать код в буфер обмена
  1.  
  2.     $array = array("эксперт", "эксперт авто Москва", "эксперт волос отзывы", "эксперт волос эвалар отзывы", "эксперт журнал", "эксперт интернет магазин", "эксперт медицинский центр", "эксперт работа", "эксперт по ДТП");
  3.     foreach($array as $row){
  4.             $current=&$tree;
  5.             $keywords=explode(' ',$row);  
  6.             foreach($keywords as $key=>$word){
  7.                     if($key<count($keywords)-1) $current=&$current[$word];
  8.                     elseif($key!=0) $current=&$current[$word];
  9.             }
  10.     }
  11.    
  12.     echo("<pre>");
  13.     print_r($tree);  
  14.     echo("</pre>");
  15.    
  16.     print '<pre>';
  17.     print_r(perebor($tree));
  18.     print '</pre>';
  19.    
  20.     function perebor($array1 = array()){
  21.         foreach($array1 as $key1=>$value){  
  22.             $array2[] =  $key1;
  23.             foreach($array1[$key1] as $key2=>$value){
  24.                 $array2[] =  $key1." ".$key2;
  25.                 foreach($array1[$key1][$key2] as $key3=>$value){
  26.                     $array2[] =  $key1." ".$key2." ".$key3;
  27.                     foreach($array1[$key1][$key2][$key3] as $key4=>$value){
  28.                         $array2[] =  $key1." ".$key2." ".$key3." ".$key4;
  29.                     }
  30.                 }
  31.             }
  32.                
  33.         }
  34.         return $array2;
  35.     }
  36.  


Как переписать функцию function perebor($array1 = array()), сделав её рекурсивной, но что-бы результат выдаваемый ей был аналогичен?

Подскажите пожалуйста кто силен в рекурсиях.
hiddensy Отправлено: 29 Октября, 2014 - 10:59:10 • Тема: Группировка одномерного массива в многомерный • Форум: Вопросы новичков

Ответов: 9
Просмотров: 751
MAXUS пишет:
hiddensy пишет:
Люди добрые помогите решить задачку.


PHP:
скопировать код в буфер обмена
  1. $array = array("эксперт", "эксперт авто Москва", "эксперт волос отзывы", "эксперт волос эвалар отзывы", "эксперт журнал", "эксперт интернет магазин", "эксперт медицинский центр", "эксперт работа", "эксперт по ДТП");
  2. foreach($array as $row){
  3.         $current=&$tree;
  4.         $keywords=explode(' ',$row);   
  5.         foreach($keywords as $key=>$word){
  6.                 if($key<count($keywords)-1) $current=&$current[$word];
  7.                 elseif($key!=0) $current[]=$word;
  8.         }
  9. }
  10. echo("<pre>");
  11. print_r($array);
  12. print_r($tree);  
  13. echo("</pre>");


Спасибо красивый код.
hiddensy Отправлено: 29 Октября, 2014 - 05:03:55 • Тема: Группировка одномерного массива в многомерный • Форум: Вопросы новичков

Ответов: 9
Просмотров: 751
kotyara1979 пишет:
hiddensy пишет:
как теперь получить одномерный массив где все ключи сформируются по такому принципу


получить откуда?


Из массивы $arr_rez, где все отобранные слова как ключи. код выше.
hiddensy Отправлено: 28 Октября, 2014 - 22:00:10 • Тема: Группировка одномерного массива в многомерный • Форум: Вопросы новичков

Ответов: 9
Просмотров: 751
Немного изменив код, а именно:
Спойлер (Отобразить)


получил результат результат все слова стали ключами с пустыми массивами.

Спойлер (Отобразить)


как теперь получить одномерный массив где все ключи сформируются по такому принципу
CODE (html):
скопировать код в буфер обмена
  1.  
  2. Array
  3. (
  4.         [0] => эксперт
  5.         [1] => эксперт авто
  6.         [2] => эксперт авто Москва
  7.         [3] => эксперт волос
  8.         [4] => эксперт волос отзывы
  9.         [5] => эксперт волос эвалар
  10.         [6] => эксперт волос эвалар отзывы
  11.         [7] => эксперт журнал
  12.         [8] => эксперт интернет
  13.         [9] => эксперт интернет магазин
  14.         [10] => эксперт медицинский
  15.         [11] => эксперт медицинский центр
  16.         [12] => эксперт работа
  17.         [13] => эксперт по
  18.         [14] => эксперт по ДТП
  19. )
  20.  
hiddensy Отправлено: 28 Октября, 2014 - 13:05:28 • Тема: Группировка одномерного массива в многомерный • Форум: Вопросы новичков

Ответов: 9
Просмотров: 751
kotyara1979 пишет:
Повторюсь: у вас результат не совпадает с условиями задачи или условия задачи с результатом.

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


Но вашим условиям это не соответствует.



В результате получился массив который я руками сделал в первом посте, один в один.
Не понял тогда про условие, где я не так объяснил или сам чего недопонял.
Но получилось именно то что нужно, спасибо огромное.
hiddensy Отправлено: 28 Октября, 2014 - 07:37:54 • Тема: Группировка одномерного массива в многомерный • Форум: Вопросы новичков

Ответов: 9
Просмотров: 751
kotyara1979 пишет:
1. Результат не совпадает с озвученными условиями.
Почему словa авто, медицинский, интернет - ключи? они же уникальны.

2. Условия не полны.
а. совпадение считается только по порядку слов?
б. если не совпадает первое слово, а второе совпадает - записывать как?
в. как записывать уникальные фразы?


1. Потому что после этих слов идут другие слова с привязкой к этому слову.

2. a) да
б) если не совпадает первое слово, то оно ключ, к ключю привязывается массив повторяющихся слов
в) враза это как минимум 2 слова вариант б)

если просто одно слово, то значение в массиве

Из приведенных 2-х массивов, вроде все понятно как и что должно быть, какое слово куда привязывается.
hiddensy Отправлено: 27 Октября, 2014 - 22:44:25 • Тема: Группировка одномерного массива в многомерный • Форум: Вопросы новичков

Ответов: 9
Просмотров: 751
Доброго времени суток.

Люди добрые помогите решить задачку.
Есть одномерный массив с данными
PHP:
скопировать код в буфер обмена
  1.  
  2. $Array1 = array("эксперт", "эксперт авто Москва", "эксперт волос отзывы", "эксперт волос эвалар отзывы", "эксперт журнал", "эксперт интернет магазин", "эксперт медицинский центр", "эксперт работа", "эксперт по ДТП");
  3. echo("<pre>");
  4. print_r($Array1);      
  5. echo("</pre>");
  6.  


Результат вывода:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. Array
  3. (
  4.     [0] => эксперт
  5.     [1] => эксперт авто Москва
  6.     [2] => эксперт волос отзывы
  7.     [3] => эксперт волос эвалар отзывы
  8.     [4] => эксперт журнал
  9.     [5] => эксперт интернет магазин
  10.     [6] => эксперт медицинский центр
  11.     [7] => эксперт работа
  12.     [8] => эксперт по ДТП
  13. )
  14.  


Как получить из этого массива сгрупперованный многомерный массив
PHP:
скопировать код в буфер обмена
  1.  
  2. $Array2 = array("эксперт" => array ("авто" => Array("Москва"), "волос"  => Array("отзывы", "эвалар" => Array("отзывы")), "журнал" , "интернет" => Array("магазин"), "медицинский" => Array("центр"), "работа", "по" => Array("ДТП")));
  3. echo("<pre>");
  4. print_r($Array2);      
  5. echo("</pre>");
  6.  


Результат вывода:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. Array
  3. (
  4.     [эксперт] => Array
  5.         (
  6.             [авто] => Array
  7.                 (
  8.                     [0] => Москва
  9.                 )
  10.  
  11.             [волос] => Array
  12.                 (
  13.                     [0] => отзывы
  14.                     [эвалар] => Array
  15.                         (
  16.                             [0] => отзывы
  17.                         )
  18.  
  19.                 )
  20.  
  21.             [0] => журнал
  22.             [интернет] => Array
  23.                 (
  24.                     [0] => магазин
  25.                 )
  26.  
  27.             [медицинский] => Array
  28.                 (
  29.                     [0] => центр
  30.                 )
  31.  
  32.             [1] => работа
  33.             [по] => Array
  34.                 (
  35.                     [0] => ДТП
  36.                 )
  37.  
  38.         )
  39.  
  40. )
  41.  


Группировка происходит по принцепу:
1) если первое слово в значениях одномерного массива одинаковое, то оно становится ключом
2) второе слово если повторяется то тоже ключ, если нет то значение
3) и т.д.

Голову сломал как это сделать функциями на PHP. Использую explode() для разделения слов в значениях одномерного массива, а дальше вроде бы циклом нужно, но не получается, прошу помощи очень нужно...
hiddensy Отправлено: 25 Сентября, 2014 - 15:37:47 • Тема: API ВКонтакте PHP для Standalone приложения. НУЖНА ПОМОЩЬ!!! • Форум: Работа с сетью

Ответов: 5
Просмотров: 9244
RickMan пишет:
Вы не сможете в браузеле сэмулировать вызов окна браузера, которым сможете управлять так же, как это делают приложения на телефоне.


RickMan, Вы сильно ошибаетесь, т.к. Вы ограничены документацией которую Вам дали разработчики BK. Есть рабочие методы для моего варианта.
hiddensy Отправлено: 25 Сентября, 2014 - 14:21:21 • Тема: API ВКонтакте PHP для Standalone приложения. НУЖНА ПОМОЩЬ!!! • Форум: Работа с сетью

Ответов: 5
Просмотров: 9244
RickMan пишет:
А если быть еще точнее, то это приложение которое может порадить в себе окно браузера, которое в итоге вернет токет. В браузере такого вы делать не сможете. Вам не standalone приложение надо делать. И вообще, ползуйтесь документацией для разработчиков от ВК, Там ясно все описанно, и примеры кода есть.


Я пытаюсь сделать эмуляцию standalone на php. Методы описанные в руководстве безусловно рабочие и их я читал и пробывал. Если уж скрипт получил бессрочный access_token, то и общаться с API как то же можно....
hiddensy Отправлено: 25 Сентября, 2014 - 13:50:44 • Тема: API ВКонтакте PHP для Standalone приложения. НУЖНА ПОМОЩЬ!!! • Форум: Работа с сетью

Ответов: 5
Просмотров: 9244
Всем привет.
На просторах сети нашел PHP код для авторизации на сайте Вконтакте. Код рабочий, немного допилил, но сделать запросы к API соц. сети не получается.

Смысл работы скрипта в следующем.
1. Создаем Standalone приложение. (у меня создано, ID приложения и Защищенный ключ уже есть в коде)
2. Авторизация происходит по логину и паролю от Вконтакте. (свои данные удалил ;)))))
3. Отрабатывая скрипт выдаёт: access_token, expires_in, user_id, email, secret

access_token - постоянный, т.к. expires_in = 0

Вопрос: Как имея эти данные, обратится к API Вконтакте?

Код:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.         //Как получить токен ВКонтакте
  4.         require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'Http.php';
  5.  
  6.     function mPrint($st){
  7.         echo("<pre>");
  8.         print_r($st);
  9.         echo("</pre>");
  10.     }
  11.    
  12.         $http= new HttpTools();
  13.  
  14.     $login = "Ваш логин в Вконтакте";
  15.         $password = "Ваш пароль от Вконтакте";
  16.    
  17.         //Id приложения
  18.         $client_id = "4559692";
  19.         $secret_key = '2PjdTT7RNcCgAMjs8jPG';
  20.         //Необходимые приложению права
  21.         $scope = "notify,friends,photos,audio,video,docs,notes,pages,status,offers,questions,wall,groups,mail,messages,notifications,stats,ads,offline,nohttps";
  22.                        
  23.         //Первый запрос
  24.         $url  = 'https://oauth.vk.com/authorize?';
  25.         $url .= 'client_id=' . $client_id;
  26.         $url .= '&scope=' . $scope;
  27.         $url .= '&redirect_uri=http://oauth.vk.com/blank.html';
  28.         $url .= '&display=mobile';
  29.     $url .= '&v=5.24';
  30.         $url .= '&response_type=token';
  31.     $url .= '&revoke=1';
  32.        
  33.     mPrint("Send GET request 1: ".$url);
  34.        
  35.         $html = $http->sendGetRequest($url, '', false);
  36.                
  37.         $_origin = $http->parseParam($html, '<input type="hidden" name="_origin" value="','">');
  38.         $ip_h = $http->parseParam($html, '<input type="hidden" name="ip_h" value="','" />');
  39.         $to = $http->parseParam($html, '<input type="hidden" name="to" value="','">');
  40.        
  41.         //Второй запрос
  42.         $url2  = 'https://login.vk.com/?act=login&soft=1&utf8=1';
  43.         $url2 .= '&ip_h=' . $ip_h;
  44.         $url2 .= '&to=' . $to;
  45.         $url2 .= '&_origin=' . $_origin;
  46.         $url2 .= '&email=' . $login;
  47.         $url2 .= '&pass=' . $password;
  48.        
  49.     mPrint("Send POST request 2: ".$url2);
  50.        
  51.         list($headers, $reply) = $http->sendPostRequest($url2, '', true);      
  52.                
  53.         //Третий запрос
  54.         $cookies1 = $http->getPageCookies($headers);
  55.         $headers = $http->formatHeadersArray($headers);
  56.         $location = @$headers['Location'];
  57.        
  58.     mPrint("Send GET request 3: ".$location);
  59.        
  60.         list($headers, $html) = $http->sendGetRequest($location, '', true);            
  61.                
  62.         $confirmUrl = $http->parseParam($html, '<form method="post" action="','">');           
  63.         $cookies = $http->getPageCookies($headers);
  64.                
  65.         $http->setCookie('remixsid='.$cookies['remixsid'].';remixlang=3'.';s='.$cookies1['s'].';l='.$cookies1['l'].';p='.$cookies1['p'].';h='.$cookies1['h']);
  66.        
  67.     mPrint("Send POST request 4: ".$confirmUrl);
  68.        
  69.         list($headers, $reply)  = $http->sendPostRequest($confirmUrl, '', true);                               
  70.         $headers = $http->formatHeadersArray($headers);        
  71.         $location = trim(@$headers['Location']);
  72.  
  73.         $token      = $http->parseParam($location, 'https://oauth.vk.com/blank.html#access_token=','&expires_in');
  74.     mPrint("access_token: ".$token);
  75.    
  76.     $expires_in = $http->parseParam($location, 'expires_in=','&user_id');
  77.     mPrint("expires_in: ".$expires_in);
  78.    
  79.     $user_id    = $http->parseParam($location, 'user_id=','&email');
  80.     mPrint("user_id: ".$user_id);
  81.    
  82.     $email      = $http->parseParam($location, 'email=','&secret');
  83.     mPrint("email: ".$email);
  84.    
  85.     $secret     = $http->parseParam($location, 'secret=','');
  86.     mPrint("secret: ".$secret);
  87.  
  88.   /*==============================*
  89.   | Ниже этой строчки не работает |
  90.   *==============================*/
  91.         //Запрос users.get
  92.         $url3  = '/method/users.get?';
  93.         $url3 .= 'uid=' . $user_id;
  94.     $url3 .= '&v=5.24';
  95.         $url3 .= '&access_token=' . $token;
  96.    
  97.     $Sig = md5('$url3.$secret');
  98.     mPrint("url3 + secret: ".$url3."<b>".$secret."</b>");
  99.    
  100.     $url3 .= '&sig=' . $Sig;
  101.    
  102.     mPrint("Send GET request users.get: ".$url3);
  103.        
  104.         $html2 = $http->sendGetRequest("https://api.vk.com".$url3, '', false);
  105.    
  106.     mPrint($html2);
  107.  
  108.   /*================================*
  109.   | Скрипт выводит следующие данные |
  110.   *================================*/
  111. // Send GET request 1:  https://oauth.vk.com/authorize?client_id=4559692&scope=notify,friends,photos,audio,video,docs,notes,pages,status,offers,questions,wall,groups,mail,messages,notifications,stats,ads,offline,nohttps&redirect_uri=http://oauth.vk.com/blank.html&display=mobile&v=5.24&response_type=token&revoke=1
  112. // Send POST request 2: https://login.vk.com/?act=login&soft=1&utf8=1&ip_h=2db93bac25f80608f0&to=aHR0cHM6Ly9vYXV0aC52ay5jb20vYXV0aG9yaXplP2NsaWVudF9pZD00NTU5NjkyJnJlZGlyZWN0X3VyaT1odHRwJTNBJTJGJTJGb2F1dGgudmsuY29tJTJGYmxhbmsuaHRtbCZyZXNwb25zZV90eXBlPXRva2VuJnNjb3BlPTIwNzk5OTkmdj01LjI0JnN0YXRlPSZyZXZva2U9MSZub2h0dHBzPTEmZGlzcGxheT1tb2JpbGU-&_origin=https://oauth.vk.com&email=?????@yandex.ru&pass=*********
  113. // Send GET request 3:  https://oauth.vk.com/authorize?client_id=4559692&redirect_uri=http%3A%2F%2Foauth.vk.com%2Fblank.html&response_type=token&scope=2079999&v=5.24&state=&revoke=1&nohttps=1&display=mobile&__q_hash=640da9d4180222f9a56ba98e5b56b1c3
  114. // Send POST request 4: https://login.vk.com/?act=grant_access&client_id=4559692&settings=2079999&redirect_uri=http%3A%2F%2Foauth.vk.com%2Fblank.html&response_type=token&direct_hash=0fe500e8c4829c2707&token_type=1&v=5.24&state=&display=mobile&ip_h=2db93bac25f80608f0&hash=1b3da1a03dd035d244&https=1
  115. // token: 5b6058ec33f60ac4814c6e76017052fc0685dcd57eb7e150d78eddf0357b1df517f25f06260352c81defd
  116. // expires_in: 0
  117. // user_id: 223???049
  118. // email: ?????@yandex.ru
  119. // secret: 993e25be49d1daaea7
  120. // url3 + secret: /method/users.get?uid=223???049&v=5.24&access_token=5b6058ec33f60ac4814c6e76017052fc0685dcd57eb7e150d78eddf0357b1df517f25f06260352c81defd993e25be49d1daaea7
  121. // Send GET request users.get: /method/users.get?uid=223???049&v=5.24&access_token=5b6058ec33f60ac4814c6e76017052fc0685dcd57eb7e150d78eddf0357b1df517f25f06260352c81defd&sig=7962ad18fb3c7bfba8000edbc7e7f474
  122. // {"error":{"error_code":5,"error_msg":"User authorization failed: sig param is incorrect, sig=md5('\/method\/users.get?uid=223???049&v=5.24&access_token=5b6058ec33f60ac4814c6e76017052fc0685dcd57eb7e150d78eddf0357b1df517f25f06260352c81defd'+SECRET)","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"users.get"},{"key":"uid","value":"223675049"},{"key":"v","value":"5.24"},{"key":"access_token","value":"5b6058ec33f60ac4814c6e76017052fc0685dcd57eb7e150d78eddf0357b1df517f25f06260352c81defd"},{"key":"sig","value":"7962ad18fb3c7bfba8000edbc7e7f474"}]}}
  123. ?>
  124.  


Подключаемый class файл Http.php:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. class HttpTools {    
  4.         const DEFAULT_HEADER = "User-Agent: Mozilla/5.0+(Windows+NT+6.2;+WOW64)+AppleWebKit/537.11+(KHTML,+like+Gecko)+Chrome/23.0.1271.95+Safari/537.11\r\nConnection: Close\r\n";
  5.    
  6.     protected $defaultHeaders;
  7.     protected $cookie;
  8.  
  9.     public function __construct($headers = self::DEFAULT_HEADER) {
  10.         $this->defaultHeaders = $headers;
  11.         $this->cookie = '';
  12.     }
  13.  
  14.     public function getCookie() {
  15.         return $this->cookie;
  16.     }
  17.     public function setCookie($cookie) {
  18.         $this->cookie = null == $cookie || '' == $cookie ? $cookie :
  19.             'Cookie: ' . (is_array($cookie) ?
  20.                 implode("\r\nCookie: ", $cookie) :
  21.                 str_replace('Cookie: ', '', $cookie)) . "\r\n";
  22.     }
  23.  
  24.     public function sendGetRequest($url, $headerExtra = '', $returnHeaders = false, $redirects = null) {
  25.         $parsedUrl = parse_url($url);
  26.         $host = $parsedUrl['host'];
  27.         //$url  = $this->resolveNames($url, $host);
  28.  
  29.         $header  = "Host: $host\r\n";
  30.         $header .= $this->defaultHeaders;
  31.         $header .= $headerExtra;
  32.         if (isset($this->cookie) && '' != $this->cookie) {
  33.             $header .= $this->cookie;
  34.         }
  35.  
  36.         $http = array('method'  => 'GET', 'header'  => $header);
  37.         if (isset($redirects)) {
  38.             $http['max_redirects'] = $redirects;
  39.         }
  40.         $context = stream_context_create(array('http' => $http));
  41.  
  42.         $response = @file_get_contents($url, false, $context);
  43.         if (false === $response || '' === $response) {
  44.             if (! isset($http_response_header)) {
  45.                 throw new NetworkException($host);
  46.             }
  47.             if (isset($redirects) && $redirects > 0) {
  48.                 $headers = $this->formatHeadersArray($http_response_header);
  49.                 $location = trim(@$headers['Location']);
  50.                 if (! empty($location)) {
  51.                     if (0 !== strpos($location, 'http')) {
  52.                         $location = 'http://' . $host . $location;
  53.                     }
  54.                     return $this->sendGetRequest($location, $headerExtra,
  55.                         $returnHeaders, $redirects-1);
  56.                 }
  57.             }
  58.             $response = '<error>' . $this->getHttpCode($http_response_header) . '</error>';
  59.         }
  60.         return ! $returnHeaders ? $response :
  61.             array($http_response_header, $response);
  62.     }
  63.  
  64.     public function sendPostRequest($url, $headerExtra = '', $returnHeaders = false) {
  65.         $parsedUrl = parse_url($url);
  66.         $host   = $parsedUrl['host'];
  67.         $params = isset($parsedUrl['query']) ? $parsedUrl['query'] : null;
  68.         //$url    = $this->resolveNames($url, $host);
  69.  
  70.         $header  = "Host: $host\r\n";
  71.         $header .= $this->defaultHeaders;
  72.         $header .= $headerExtra;
  73.         if (isset($this->cookie) && '' != $this->cookie) {
  74.             $header .= $this->cookie;
  75.         }
  76.  
  77.         $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
  78.         $context = stream_context_create(array(
  79.             'http' => array(
  80.                 'protocol_version' => 1.1,
  81.                 'max_redirects' => 1,
  82.                 'method'  => 'POST',
  83.                 'timeout' => 50,
  84.                 'content' => $params,
  85.                 'header'  => $header)));
  86.  
  87.         $url = str_replace("?$params", '', $url);
  88.         $response = @file_get_contents($url, false, $context);
  89.         if (false === $response || '' === $response) {
  90.             if (! isset($http_response_header)) {
  91.                 throw new NetworkException($host);
  92.             }
  93.             $response = '<error>' . $this->getHttpCode($http_response_header) . '</error>';
  94.         }
  95.         return ! $returnHeaders ? $response :
  96.             array($http_response_header, $response);
  97.     }
  98.  
  99.     public function sendMixedPostRequest($url, $params, $headerExtra = '', $returnHeaders = false) {
  100.         $parsedUrl = parse_url($url);
  101.         $host = $parsedUrl['host'];
  102.  
  103.         $header  = "Host: $host\r\n";
  104.         $header .= $this->defaultHeaders;
  105.         $header .= $headerExtra;
  106.         if (isset($this->cookie) && '' != $this->cookie) {
  107.             $header .= $this->cookie;
  108.         }
  109.  
  110.         $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
  111.         $context = stream_context_create(array(
  112.             'http' => array(
  113.                 'protocol_version' => 1.1,
  114.                 'method'  => 'POST',
  115.                 'timeout' => 50,
  116.                 'content' => $params,
  117.                 'header'  => $header)));
  118.  
  119.         $response = @file_get_contents($url, false, $context);
  120.         if (false === $response || '' === $response) {
  121.             $response = '<error>' . $this->getHttpCode($http_response_header) . '</error>';
  122.         }
  123.         return ! $returnHeaders ? $response :
  124.             array($http_response_header, $response);
  125.     }
  126.  
  127.     protected function getHttpCode($headers, $takeLast = true) {
  128.         if ($takeLast) {
  129.             $headers = array_reverse($headers);
  130.         }
  131.         foreach ($headers as $header) {
  132.             if (0 === strpos($header, 'HTTP/')) {
  133.                 return $header;
  134.             }
  135.         }
  136.         return null;
  137.     }
  138.  
  139.     # temporary solution for vk.com problem
  140.    protected function resolveNames($url, $host) {
  141.         if (false !== strpos($host, 'vk.com')) {
  142.             $ip = @gethostbyname($host);
  143.             if (empty($ip) || $ip == $host) {
  144.                 $url = str_replace('login.vk.com', '87.240.131.120', $url);
  145.                 $url = str_replace('vk.com', '87.240.131.119', $url);
  146.             }
  147.         }
  148.         return $url;
  149.     }
  150.  
  151.     public function getPageCookies($headers) {
  152.         $cookies = array();
  153.         foreach ($headers as $header) {
  154.             if (0 === strpos($header, 'Set-Cookie: ')) {
  155.                 $cookie = substr($header, strlen('Set-Cookie: '));
  156.                 if (false !== strpos($cookie, ';')) {
  157.                     $cookie = substr($cookie, 0, strpos($cookie, ';'));
  158.                 }
  159.                 list($name, $value) = explode('=', $cookie);
  160.                 if (isset($cookies[$name])) {
  161.                     for ($i = 1; isset($cookies[$name . $i]); $i++);
  162.                     $name .= $i;
  163.                 }
  164.                 $cookies[$name] = $value;
  165.             }
  166.         }
  167.         return $cookies;
  168.     }
  169.  
  170.     public function formatHeadersArray($headers) {
  171.         $newHeaders = array();
  172.         foreach ($headers as $header) {
  173.             if (false === strpos($header, ': ')) {
  174.                 $newHeaders[] = $header;
  175.             } else {
  176.                 list($key, $value) = explode(': ', $header, 2);
  177.                 $newHeaders[$key] = $value;
  178.             }
  179.         }
  180.         return $newHeaders;
  181.     }
  182.  
  183.     public static function checkUrl($url) {
  184.         $headers = get_headers($url);
  185.         return ! empty($headers) && false !== strpos($headers[0], "200 OK");
  186.     }
  187.        
  188.         public function parseParam($scope, $prefix, $suffix, $default = null, $occurence = 1) {
  189.                 if (! isset($scope) || ! is_string($scope)) {
  190.             return $default;
  191.         }
  192.         for ($start = 0; $occurence > 0; $occurence--) {
  193.             $start = null == $prefix || '' == $prefix ? 0 :
  194.                strpos($scope, $prefix, $start);
  195.             if (false === $start) {
  196.                 return $default;
  197.             }
  198.             $start += strlen($prefix);
  199.         }
  200.         $stop =  null == $suffix || '' == $suffix ? strlen($scope) :
  201.             strpos($scope, $suffix, $start);
  202.         if (false === $stop) {
  203.             return $default;
  204.         }              
  205.         return substr($scope, $start, $stop - $start);
  206.     }  
  207. }
  208. ?>
  209.  


P.S. Перепробовал кучу сторонних слассов, перечитал кучу статей и ничего не выходит. Проблема по моему мнению зарыта вот тут http://vk.com/dev/api_nohttps, но разобраться не получается.
hiddensy Отправлено: 27 Июня, 2012 - 14:54:03 • Тема: не работает регулярное выражение для ip адреса • Форум: Регулярные выражения

Ответов: 16
Просмотров: 1606
DeepVarvar пишет:
hiddensy пишет:
/([0-9]+)/
Ваш вариант полурабочий.
Он пропускает некорректные значения.
Диапазон IPv4: 0.0.0.0:0 - 255.255.255.255:65535
И мне кажется вы это знаете.


Если Вас не затруднит, поправле до рабочего варианта, я мозг сломал с регуляркой.
hiddensy Отправлено: 27 Июня, 2012 - 13:29:45 • Тема: не работает регулярное выражение для ip адреса • Форум: Регулярные выражения

Ответов: 16
Просмотров: 1606
Не могу разобраться как правильно написать регулярное выражение.

Нужно IP:port разбить и записать в массив

Пример: 192.168.2.34:8080

Результат:
Array
(
[0] => 192
[1] => 168
[2] => 2
[3] => 34
[4] => 8080
)

Помогите составить регулярку пожалуйста
(Добавление)
Наконец-то разобрался... Если кому интересно, то вот рабочий вариант

PHP:
скопировать код в буфер обмена
  1.  
  2. $getIP = "192.168.2.34:8080";
  3. preg_match_all('/([0-9]+)/',$getIP,$arr);
  4. for ($i=0; $i<count($arr[1]); $i++) echo $arr[1][$i]."<br>";
  5.  

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB