PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (1): [1]
Найдено сообщений: 15
hiddensy
Отправлено: 08 Ноября, 2014 - 17:34:19 • Тема: Разбить слово на слоги. Переписать в функцию. • Форум: Напишите за меня, пожалуйста
Ответов: 1 Просмотров: 67
Всем привет.
Помогите переписать javascript в функцию на php, что-бы на выходе было слово разбитое на слоги.
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<script language = "javascript" >
var vowel = new String ( 'аеёиоуыэюя' ) ; // Гласные буквы
var voiced = new String ( 'бвгджзлмнрхцчшщ' ) ; // Звонкие и шипящие согласные
var deaf = new String ( 'кпстф' ) ; // Глухие согласные
var brief = new String ( 'й' ) ; // Й
var other = new String ( 'ьъ' ) ; // Другие
var cons = new String ( 'бвгджзйклмнпрстфхцчшщ' ) ; // Все согласные
// Валидация правильности введенной строки
function validateString ( s) {
// Поленился делать :)
return s;
} // function validateString (s)
// Есть ли в строке гласные?
function isNotLastSep ( remainStr) {
var is = false ;
for ( var i = 0 ; i < remainStr. length; i++ ) {
if ( vowel
. indexOf
( remainStr
. substr ( i
, 1
) ) != - 1
) { is
= true ; break ; } } // for (var i = 0; i < remainStr - 1; i++)
return is;
} // function isLastSep (remainStr)
// Собственно функция разбиения слова на слоги
function getSeparatedString ( s) {
// Добавляем слог в массив и начинаем новый слог
function addSep ( ) {
sepArr. push ( tmpS) ;
tmpS = '' ;
} // function addSep ()
s = validateString ( s) ;
var tmpL = new String ( ) ; // Текущий символ
var tmpS = new String ( ) ; // Текущий слог
var sepArr
= new Array ( ) ; // Массив слогов for ( var i = 0 ; i < s. length; i++ ) {
tmpS += tmpL;
// Проверка на признаки конца слогов
// если буква равна 'й' и она не первая и не последняя и это не последний слог
if (
( i != 0) &&
( i != s. length - 1) &&
( brief. indexOf ( tmpL) != - 1) &&
( isNotLastSep
( s
. substr ( i
+ 1
, s
. length
- i
+ 1
) ) ) ) { addSep ( ) ; continue ; }
// если текущая гласная и следующая тоже гласная
if (
( i < s. length - 1) &&
( vowel. indexOf ( tmpL) != - 1) &&
( vowel
. indexOf
( s
. substr ( i
+ 1
, 1
) ) != - 1
) ) { addSep ( ) ; continue ; }
// если текущая гласная, следующая согласная, а после неё гласная
if (
( i < s. length - 2) &&
( vowel. indexOf ( tmpL) != - 1) &&
( cons
. indexOf
( s
. substr ( i
+ 1
, 1
) ) != - 1
) && ( vowel
. indexOf
( s
. substr ( i
+ 2
, 1
) ) != - 1
) ) { addSep ( ) ; continue ; }
// если текущая гласная, следующая глухая согласная, а после согласная и это не последний слог
if (
( i < s. length - 2) &&
( vowel. indexOf ( tmpL) != - 1) &&
( deaf
. indexOf
( s
. substr ( i
+ 1
, 1
) ) != - 1
) && ( cons
. indexOf
( s
. substr ( i
+ 2
, 1
) ) != - 1
) && ( isNotLastSep
( s
. substr ( i
+ 1
, s
. length
- i
+ 1
) ) ) ) { addSep ( ) ; continue ; }
// если текущая звонкая или шипящая согласная, перед ней гласная, следующая не гласная и не другая, и это не последний слог
if (
( i > 0) &&
( i < s. length - 1) &&
( voiced. indexOf ( tmpL) != - 1) &&
( vowel
. indexOf
( s
. substr ( i
- 1
, 1
) ) != - 1
) && ( vowel
. indexOf
( s
. substr ( i
+ 1
, 1
) ) == - 1
) && ( other
. indexOf
( s
. substr ( i
+ 1
, 1
) ) == - 1
) && ( isNotLastSep
( s
. substr ( i
+ 1
, s
. length
- i
+ 1
) ) ) ) { addSep ( ) ; continue ; }
// если текущая другая, а следующая не гласная если это первый слог
if (
( i < s. length - 1) &&
( other. indexOf ( tmpL) != - 1) &&
( ( vowel
. indexOf
( s
. substr ( i
+ 1
, 1
) ) == - 1
) || ( isNotLastSep
( s
. substr ( 0
, i
) ) ) ) ) { addSep ( ) ; continue ; }
} // for (var i = 0; i < s.length; i++)
sepArr. push ( tmpS) ;
} // function getSeparatedString (s)
</script>
В сети кроме этого примера ничего не нашел нормального. Если кто знает примеры реализации для php подскажите или помогите переписать приведенный выше код с javascript на php
hiddensy
Отправлено: 29 Октября, 2014 - 13:25:04 • Тема: Как переписать функцию в рекурсивную • Форум: Вопросы новичков
Ответов: 4 Просмотров: 189
Panoptik пишет: какой хоть результат выводится?
PHP:
скопировать код в буфер обмена
(
[ 0 ] => эксперт
[ 1 ] => эксперт авто
[ 2 ] => эксперт авто Москва
[ 3 ] => эксперт волос
[ 4 ] => эксперт волос отзывы
[ 5 ] => эксперт волос эвалар
[ 6 ] => эксперт волос эвалар отзывы
[ 7 ] => эксперт журнал
[ 8 ] => эксперт интернет
[ 9 ] => эксперт интернет магазин
[ 10 ] => эксперт медицинский
[ 11 ] => эксперт медицинский центр
[ 12 ] => эксперт работа
[ 13 ] => эксперт по
[ 14 ] => эксперт по ДТП
)
hiddensy
Отправлено: 29 Октября, 2014 - 13:10:14 • Тема: Как переписать функцию в рекурсивную • Форум: Вопросы новичков
Ответов: 4 Просмотров: 189
Всем привет.
есть такой код
PHP:
скопировать код в буфер обмена
$array = array ( "эксперт" , "эксперт авто Москва" , "эксперт волос отзывы" , "эксперт волос эвалар отзывы" , "эксперт журнал" , "эксперт интернет магазин" , "эксперт медицинский центр" , "эксперт работа" , "эксперт по ДТП" ) ; foreach ( $array as $row ) {
$current =& $tree ;
foreach ( $keywords as $key => $word ) {
if ( $key < count( $keywords ) - 1) $current =& $current [ $word ] ;
elseif ( $key != 0) $current =& $current [ $word ] ;
}
}
echo ( "<pre>" ) ;
echo ( "</pre>" ) ;
print '<pre>' ;
print '</pre>' ;
function perebor
( $array1 = array ( ) ) { foreach ( $array1 as $key1 => $value ) {
$array2 [ ] = $key1 ;
foreach ( $array1 [ $key1 ] as $key2 => $value ) {
$array2 [ ] = $key1 . " " . $key2 ;
foreach ( $array1 [ $key1 ] [ $key2 ] as $key3 => $value ) {
$array2 [ ] = $key1 . " " . $key2 . " " . $key3 ;
foreach ( $array1 [ $key1 ] [ $key2 ] [ $key3 ] as $key4 => $value ) {
$array2 [ ] = $key1 . " " . $key2 . " " . $key3 . " " . $key4 ;
}
}
}
}
return $array2 ;
}
Как переписать функцию function perebor($array1 = array()), сделав её рекурсивной, но что-бы результат выдаваемый ей был аналогичен?
Подскажите пожалуйста кто силен в рекурсиях.
hiddensy
Отправлено: 29 Октября, 2014 - 10:59:10 • Тема: Группировка одномерного массива в многомерный • Форум: Вопросы новичков
Ответов: 9 Просмотров: 751
MAXUS пишет: hiddensy пишет: Люди добрые помогите решить задачку.
PHP:
скопировать код в буфер обмена
$array = array ( "эксперт" , "эксперт авто Москва" , "эксперт волос отзывы" , "эксперт волос эвалар отзывы" , "эксперт журнал" , "эксперт интернет магазин" , "эксперт медицинский центр" , "эксперт работа" , "эксперт по ДТП" ) ; foreach ( $array as $row ) {
$current =& $tree ;
foreach ( $keywords as $key => $word ) {
if ( $key < count( $keywords ) - 1) $current =& $current [ $word ] ;
elseif ( $key != 0) $current [ ] = $word ;
}
}
echo ( "<pre>" ) ;
echo ( "</pre>" ) ;
Спасибо красивый код.
hiddensy
Отправлено: 29 Октября, 2014 - 05:03:55 • Тема: Группировка одномерного массива в многомерный • Форум: Вопросы новичков
Ответов: 9 Просмотров: 751
kotyara1979 пишет: hiddensy пишет: как теперь получить одномерный массив где все ключи сформируются по такому принципу
получить откуда?
Из массивы $arr_rez, где все отобранные слова как ключи. код выше.
hiddensy
Отправлено: 28 Октября, 2014 - 22:00:10 • Тема: Группировка одномерного массива в многомерный • Форум: Вопросы новичков
Ответов: 9 Просмотров: 751
Немного изменив код, а именно:
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
function check_word( $key02 , $val )
{
global $arr2 ;
$kol = 0 ;
foreach ( $arr2 as $arr )
{
if ( $arr [ $key02 ] == $val ) $kol ++;
if ( $kol == 2) return 'INDEX' ;
}
return 'VALUE' ;
}
// исходный
( 'эксперт' ,
'эксперт авто Москва' ,
'эксперт волос отзывы' ,
'эксперт волос эвалар отзывы' ,
'эксперт журнал' ,
'эксперт интернет магазин' ,
'эксперт медицинский центр' ,
'эксперт работа' ,
'эксперт по ДТП' ) ;
// получаем массив для анализа
foreach ( $arr1 as $key => $val )
{
}
// прогоняем массив - строим результат
foreach ( $arr2 as $key01 => $arr )
{
$rez1 = '$arr_rez' ;
foreach ( $arr as $key02 => $val )
{
if ( check_word( $key02 , $val ) == 'INDEX' ) $rez1 .= "['$val ']" ;
elseif ( $key02 + 1<> $arr_kol ) $rez1 .= "['$val ']" ;
else $rez1 .= "['$val ']" ;
}
if ( substr ( $rez1 ,- 1 ) <> ';' ) $rez1 .= '=array();' ; }
print '<pre>' ;
print '</pre>' ;
получил результат результат все слова стали ключами с пустыми массивами.
как теперь получить одномерный массив где все ключи сформируются по такому принципу
CODE (
html ):
скопировать код в буфер обмена
Array
(
[0] => эксперт
[1] => эксперт авто
[2] => эксперт авто Москва
[3] => эксперт волос
[4] => эксперт волос отзывы
[5] => эксперт волос эвалар
[6] => эксперт волос эвалар отзывы
[7] => эксперт журнал
[8] => эксперт интернет
[9] => эксперт интернет магазин
[10] => эксперт медицинский
[11] => эксперт медицинский центр
[12] => эксперт работа
[13] => эксперт по
[14] => эксперт по ДТП
)
hiddensy
Отправлено: 28 Октября, 2014 - 13:05:28 • Тема: Группировка одномерного массива в многомерный • Форум: Вопросы новичков
Ответов: 9 Просмотров: 751
kotyara1979 пишет: Повторюсь: у вас результат не совпадает с условиями задачи или условия задачи с результатом.
Ваш результат легко и быстро получается вот таким скриптом. Вариант черновой, его можно здорово сократить, но это уже сами.
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
function check_word( $key02 , $val )
{
global $arr2 ;
$kol = 0 ;
foreach ( $arr2 as $arr )
{
if ( $arr [ $key02 ] == $val ) $kol ++;
if ( $kol == 2) return 'INDEX' ;
}
return 'VALUE' ;
}
// исходный
( 'эксперт' ,
'эксперт авто Москва' ,
'эксперт волос отзывы' ,
'эксперт волос эвалар отзывы' ,
'эксперт журнал' ,
'эксперт интернет магазин' ,
'эксперт медицинский центр' ,
'эксперт работа' ,
'эксперт по ДТП' ) ;
// получаем массив для анализа
foreach ( $arr1 as $key => $val )
{
}
// прогоняем массив - строим результат
foreach ( $arr2 as $key01 => $arr )
{
$rez1 = '$arr_rez' ;
foreach ( $arr as $key02 => $val )
{
if ( check_word( $key02 , $val ) == 'INDEX' ) $rez1 .= "['$val ']" ;
elseif ( $key02 + 1<> $arr_kol ) $rez1 .= "['$val ']" ;
else $rez1 .= "[]='$val ';" ;
}
if ( substr ( $rez1 ,- 1 ) <> ';' ) $rez1 .= '=array();' ; }
print '<pre>' ;
print '</pre>' ;
Но вашим условиям это не соответствует.
В результате получился массив который я руками сделал в первом посте, один в один.
Не понял тогда про условие, где я не так объяснил или сам чего недопонял.
Но получилось именно то что нужно, спасибо огромное.
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:
скопировать код в буфер обмена
$Array1 = array ( "эксперт" , "эксперт авто Москва" , "эксперт волос отзывы" , "эксперт волос эвалар отзывы" , "эксперт журнал" , "эксперт интернет магазин" , "эксперт медицинский центр" , "эксперт работа" , "эксперт по ДТП" ) ; echo ( "<pre>" ) ;
echo ( "</pre>" ) ;
Результат вывода:
CODE (
html ):
скопировать код в буфер обмена
Array
(
[0] => эксперт
[1] => эксперт авто Москва
[2] => эксперт волос отзывы
[3] => эксперт волос эвалар отзывы
[4] => эксперт журнал
[5] => эксперт интернет магазин
[6] => эксперт медицинский центр
[7] => эксперт работа
[8] => эксперт по ДТП
)
Как получить из этого массива сгрупперованный многомерный массив
Результат вывода:
CODE (
html ):
скопировать код в буфер обмена
Array
(
[эксперт] => Array
(
[авто] => Array
(
[0] => Москва
)
[волос] => Array
(
[0] => отзывы
[эвалар] => Array
(
[0] => отзывы
)
)
[0] => журнал
[интернет] => Array
(
[0] => магазин
)
[медицинский] => Array
(
[0] => центр
)
[1] => работа
[по] => Array
(
[0] => ДТП
)
)
)
Группировка происходит по принцепу:
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:
скопировать код в буфер обмена
<?PHP
//Как получить токен ВКонтакте
require_once dirname ( __FILE__ ) . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'Http.php' ;
function mPrint( $st ) {
echo ( "<pre>" ) ;
echo ( "</pre>" ) ;
}
$http = new HttpTools( ) ;
$login = "Ваш логин в Вконтакте" ;
$password = "Ваш пароль от Вконтакте" ;
//Id приложения
$client_id = "4559692" ;
$secret_key = '2PjdTT7RNcCgAMjs8jPG' ;
//Необходимые приложению права
$scope = "notify,friends,photos,audio,video,docs,notes,pages,status,offers,questions,wall,groups,mail,messages,notifications,stats,ads,offline,nohttps" ;
//Первый запрос
$url = 'https://oauth.vk.com/authorize?' ;
$url .= 'client_id=' . $client_id ;
$url .= '&scope=' . $scope ;
$url .= '&redirect_uri=http://oauth.vk.com/blank.html' ;
$url .= '&display=mobile' ;
$url .= '&v=5.24' ;
$url .= '&response_type=token' ;
$url .= '&revoke=1' ;
mPrint( "Send GET request 1: " . $url ) ;
$html = $http -> sendGetRequest ( $url , '' , false ) ;
$_origin = $http -> parseParam ( $html , '<input type="hidden" name="_origin" value="' , '">' ) ;
$ip_h = $http -> parseParam ( $html , '<input type="hidden" name="ip_h" value="' , '" />' ) ;
$to = $http -> parseParam ( $html , '<input type="hidden" name="to" value="' , '">' ) ;
//Второй запрос
$url2 = 'https://login.vk.com/?act=login&soft=1&utf8=1' ;
$url2 .= '&ip_h=' . $ip_h ;
$url2 .= '&to=' . $to ;
$url2 .= '&_origin=' . $_origin ;
$url2 .= '&email=' . $login ;
$url2 .= '&pass=' . $password ;
mPrint( "Send POST request 2: " . $url2 ) ;
list ( $headers , $reply ) = $http -> sendPostRequest ( $url2 , '' , true ) ;
//Третий запрос
$cookies1 = $http -> getPageCookies ( $headers ) ;
$headers = $http -> formatHeadersArray ( $headers ) ;
$location = @ $headers [ 'Location' ] ;
mPrint( "Send GET request 3: " . $location ) ;
list ( $headers , $html ) = $http -> sendGetRequest ( $location , '' , true ) ;
$confirmUrl = $http -> parseParam ( $html , '<form method="post" action="' , '">' ) ;
$cookies = $http -> getPageCookies ( $headers ) ;
$http -> setCookie ( 'remixsid=' . $cookies [ 'remixsid' ] . ';remixlang=3' . ';s=' . $cookies1 [ 's' ] . ';l=' . $cookies1 [ 'l' ] . ';p=' . $cookies1 [ 'p' ] . ';h=' . $cookies1 [ 'h' ] ) ;
mPrint( "Send POST request 4: " . $confirmUrl ) ;
list ( $headers , $reply ) = $http -> sendPostRequest ( $confirmUrl , '' , true ) ; $headers = $http -> formatHeadersArray ( $headers ) ;
$location = trim ( @ $headers [ 'Location' ] ) ;
$token = $http -> parseParam ( $location , 'https://oauth.vk.com/blank.html#access_token=' , '&expires_in' ) ;
mPrint( "access_token: " . $token ) ;
$expires_in = $http -> parseParam ( $location , 'expires_in=' , '&user_id' ) ;
mPrint( "expires_in: " . $expires_in ) ;
$user_id = $http -> parseParam ( $location , 'user_id=' , '&email' ) ;
mPrint( "user_id: " . $user_id ) ;
$email = $http -> parseParam ( $location , 'email=' , '&secret' ) ;
mPrint( "email: " . $email ) ;
$secret = $http -> parseParam ( $location , 'secret=' , '' ) ;
mPrint( "secret: " . $secret ) ;
/*==============================*
| Ниже этой строчки не работает |
*==============================*/
//Запрос users.get
$url3 = '/method/users.get?' ;
$url3 .= 'uid=' . $user_id ;
$url3 .= '&v=5.24' ;
$url3 .= '&access_token=' . $token ;
$Sig = md5 ( '$url3.$secret' ) ; mPrint( "url3 + secret: " . $url3 . "<b>" . $secret . "</b>" ) ;
$url3 .= '&sig=' . $Sig ;
mPrint( "Send GET request users.get: " . $url3 ) ;
$html2 = $http -> sendGetRequest ( "https://api.vk.com" . $url3 , '' , false ) ;
mPrint( $html2 ) ;
/*================================*
| Скрипт выводит следующие данные |
*================================*/
// 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
// 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=*********
// 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
// 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
// token: 5b6058ec33f60ac4814c6e76017052fc0685dcd57eb7e150d78eddf0357b1df517f25f06260352c81defd
// expires_in: 0
// user_id: 223???049
// email: ?????@yandex.ru
// secret: 993e25be49d1daaea7
// url3 + secret: /method/users.get?uid=223???049&v=5.24&access_token=5b6058ec33f60ac4814c6e76017052fc0685dcd57eb7e150d78eddf0357b1df517f25f06260352c81defd993e25be49d1daaea7
// Send GET request users.get: /method/users.get?uid=223???049&v=5.24&access_token=5b6058ec33f60ac4814c6e76017052fc0685dcd57eb7e150d78eddf0357b1df517f25f06260352c81defd&sig=7962ad18fb3c7bfba8000edbc7e7f474
// {"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"}]}}
?>
Подключаемый class файл Http.php:
PHP:
скопировать код в буфер обмена
<?PHP
class HttpTools {
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 \n Connection: Close\r \n " ;
protected $defaultHeaders ;
protected $cookie ;
public function __construct( $headers = self :: DEFAULT_HEADER ) {
$this -> defaultHeaders = $headers ;
$this -> cookie = '' ;
}
public function getCookie( ) {
return $this -> cookie ;
}
$this -> cookie = null == $cookie || '' == $cookie ? $cookie :
}
public function sendGetRequest( $url , $headerExtra = '' , $returnHeaders = false , $redirects = null ) {
$host = $parsedUrl [ 'host' ] ;
//$url = $this->resolveNames($url, $host);
$header = "Host: $host \r \n " ;
$header .= $this -> defaultHeaders ;
$header .= $headerExtra ;
if ( isset ( $this -> cookie ) && '' != $this -> cookie ) { $header .= $this -> cookie ;
}
$http = array ( 'method' => 'GET' , 'header' => $header ) ; $http [ 'max_redirects' ] = $redirects ;
}
if ( false === $response || '' === $response ) {
if ( ! isset ( $http_response_header ) ) { throw new NetworkException( $host ) ;
}
if ( isset ( $redirects ) && $redirects > 0
) { $headers = $this -> formatHeadersArray ( $http_response_header ) ;
$location = trim ( @ $headers [ 'Location' ] ) ; if ( ! empty ( $location ) ) { if ( 0
!== strpos ( $location , 'http' ) ) { $location = 'http://' . $host . $location ;
}
return $this -> sendGetRequest ( $location , $headerExtra ,
$returnHeaders , $redirects - 1) ;
}
}
$response = '<error>' . $this -> getHttpCode ( $http_response_header ) . '</error>' ;
}
return ! $returnHeaders ? $response :
array ( $http_response_header , $response ) ; }
public function sendPostRequest( $url , $headerExtra = '' , $returnHeaders = false ) {
$host = $parsedUrl [ 'host' ] ;
$params = isset ( $parsedUrl [ 'query' ] ) ?
$parsedUrl [ 'query' ] : null ; //$url = $this->resolveNames($url, $host);
$header = "Host: $host \r \n " ;
$header .= $this -> defaultHeaders ;
$header .= $headerExtra ;
if ( isset ( $this -> cookie ) && '' != $this -> cookie ) { $header .= $this -> cookie ;
}
$header .= "Content-Type: application/x-www-form-urlencoded\r \n " ;
'protocol_version' => 1.1 ,
'max_redirects' => 1 ,
'method' => 'POST' ,
'timeout' => 50 ,
'content' => $params ,
'header' => $header ) ) ) ;
if ( false === $response || '' === $response ) {
if ( ! isset ( $http_response_header ) ) { throw new NetworkException( $host ) ;
}
$response = '<error>' . $this -> getHttpCode ( $http_response_header ) . '</error>' ;
}
return ! $returnHeaders ? $response :
array ( $http_response_header , $response ) ; }
public function sendMixedPostRequest( $url , $params , $headerExtra = '' , $returnHeaders = false ) {
$host = $parsedUrl [ 'host' ] ;
$header = "Host: $host \r \n " ;
$header .= $this -> defaultHeaders ;
$header .= $headerExtra ;
if ( isset ( $this -> cookie ) && '' != $this -> cookie ) { $header .= $this -> cookie ;
}
$header .= "Content-Type: application/x-www-form-urlencoded\r \n " ;
'protocol_version' => 1.1 ,
'method' => 'POST' ,
'timeout' => 50 ,
'content' => $params ,
'header' => $header ) ) ) ;
if ( false === $response || '' === $response ) {
$response = '<error>' . $this -> getHttpCode ( $http_response_header ) . '</error>' ;
}
return ! $returnHeaders ? $response :
array ( $http_response_header , $response ) ; }
protected function getHttpCode( $headers , $takeLast = true ) {
if ( $takeLast ) {
}
foreach ( $headers as $header ) {
if ( 0
=== strpos ( $header , 'HTTP/' ) ) { return $header ;
}
}
return null ;
}
# temporary solution for vk.com problem
protected function resolveNames( $url , $host ) {
if ( false !== strpos ( $host , 'vk.com' ) ) { if ( empty ( $ip ) || $ip == $host ) { $url = str_replace ( 'login.vk.com' , '87.240.131.120' , $url ) ; }
}
return $url ;
}
public function getPageCookies( $headers ) {
foreach ( $headers as $header ) {
if ( 0
=== strpos ( $header , 'Set-Cookie: ' ) ) { if ( false !== strpos ( $cookie , ';' ) ) { }
if ( isset ( $cookies [ $name ] ) ) { for ( $i = 1 ; isset ( $cookies [ $name . $i ] ) ; $i ++ ) ; $name .= $i ;
}
$cookies [ $name ] = $value ;
}
}
return $cookies ;
}
public function formatHeadersArray( $headers ) {
foreach ( $headers as $header ) {
if ( false === strpos ( $header , ': ' ) ) { $newHeaders [ ] = $header ;
} else {
$newHeaders [ $key ] = $value ;
}
}
return $newHeaders ;
}
public static function checkUrl( $url ) {
return ! empty ( $headers ) && false !== strpos ( $headers [ 0 ] , "200 OK" ) ; }
public function parseParam( $scope , $prefix , $suffix , $default = null , $occurence = 1) {
return $default ;
}
for ( $start = 0 ; $occurence > 0 ; $occurence -- ) {
$start = null == $prefix || '' == $prefix ? 0 :
strpos ( $scope , $prefix , $start ) ; if ( false === $start ) {
return $default ;
}
}
$stop = null == $suffix || '' == $suffix ?
strlen ( $scope ) : strpos ( $scope , $suffix , $start ) ; if ( false === $stop ) {
return $default ;
}
return substr ( $scope , $start , $stop - $start ) ; }
}
?>
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
)
Помогите составить регулярку пожалуйста
(Добавление)
Наконец-то разобрался... Если кому интересно, то вот рабочий вариант
Страниц (1): [1]
Powered by ExBB FM 1.0 RC1. InvisionExBB