Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: стандартынй метод перевода строки (параметры GET запроса) в массив

 PHP.SU

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


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

> Описание: может существует стандартный метод, чтоб не лепить велосипед
DlTA
Отправлено: 18 Марта, 2011 - 13:42:12
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




есть строка
par1=123&par2=234&par3=qwe и т.д.
есть ли стандартный метод преобразовать это все в массив, чтоб на выходе получить

array(3)
{
['par1']=>'123'
['par2']=>'234'
['par3']=>'qwe'
}

P.S.
c самопистными вариантами не утруждайтесь, эт я и сам могу!
 
 Top
JustUserR
Отправлено: 18 Марта, 2011 - 13:51:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




DlTA пишет:
Есть ли стандартный метод преобразовать это все в массив
Для осуществления решения предполагамой задачи по проведению извлечению дифферентных информационных полей из строки запроса для заданного PHP-приложения, необходимо использование средств разделения объектов в программное слое данных с базовыми параметрами конфигурации строковых выражений в потоке исполнения, на основании детерминации оригинальной кодовой таблицы и элементного уровня трактования для объектов унифицированного информационного поля с инкапсулированными элементами


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
EuGen Администратор
Отправлено: 18 Марта, 2011 - 13:59:06
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Не совсем точный, но все же вариант:
PHP:
скопировать код в буфер обмена
  1. $str='par1=123&par2=234&par3=qwe';
  2. preg_match_all('/([^\=\&]*)\=([^\=\&]*)/', $str, $rgMatches);
  3. $rgResult = array_combine($rgMatches[1],$rgMatches[2]);
  4. //var_dump($rgResult);


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
JustUserR
Отправлено: 18 Марта, 2011 - 14:14:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




DlTA В качестве конкретного программного решения, осуществляющего достжение поставленной цели, допустимо использование следующей функции
PHP:
скопировать код в буфер обмена
  1. function qr_string($str)
  2.  { $ivs=explode("&",$str);
  3.    $res_arr=array();
  4.    for($i=0;$i<count($ivs);$i++)
  5.    {  list($pr,$vl)=explode("=",$ivs[$i]);
  6.       $res_arr[$pr]=urldecode($vl);
  7.    }
  8.   return $res_arr
  9.  }


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
DlTA
Отправлено: 18 Марта, 2011 - 14:28:51
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




тогда уже так
PHP:
скопировать код в буфер обмена
  1. function drop($str )
  2. {
  3.         $retAr = array();
  4.         foreach(explode('&',$str) as $sp)
  5.         {
  6.                 $tex = explode('=',$sp);
  7.                 if(count($tex)==2)
  8.                 {
  9.                         $tem[$tex[0]]=$tex[1];
  10.                         $retAr[]=$tem;
  11.                 }
  12.         }
  13.         return $retAr;
  14. }

(Добавление)
EuGen ))
в лидерах
 
 Top
EuGen Администратор
Отправлено: 18 Марта, 2011 - 14:36:23
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




DlTA пишет:
if(count($tex)==2)

В GET-запросе может прийти что-то вроде param1=value1&param2=&param3=value3
(у param2 нет значения, но не совсем корректно пропускать его вообще, лучше указать на отсутствие значения).


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DlTA
Отправлено: 18 Марта, 2011 - 14:51:00
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




EuGen в принципе да
 
 Top
Ch_chov
Отправлено: 18 Марта, 2011 - 15:20:02
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




 
 Top
EuGen Администратор
Отправлено: 18 Марта, 2011 - 15:23:08
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Нам всем "-"

Сейчас работаю со своим старым кодом для обработки разных http и вижу там parse_url и parse_str - да, видимо, совсем давно писал

Стыдно нам должно быть за незнание стандартов, хм..


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
varyag
Отправлено: 18 Марта, 2011 - 15:50:52
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




файл parts.php
PHP:
скопировать код в буфер обмена
  1. echo "<a href='parts.php?par1=123&par2=234&par3=qwe'>par1=123&par2=234&par3=qwe</a><br />";
  2. print_r($_GET);

Радость

(Отредактировано автором: 18 Марта, 2011 - 15:53:01)

 
 Top
aidhen
Отправлено: 18 Марта, 2011 - 16:52:56
Post Id



Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Ch_chov правильно пишет, посмотри функцию parse_str

PHP:
скопировать код в буфер обмена
  1.  
  2. $s = 'par1=123&par2=234&par3=qwe';
  3.  
  4. parse_str($s, $m);
  5.  
  6. print_r($m);
  7.  
  8. //Array ( [par1] => 123 [par2] => 234 [par3] => qwe )
  9.  
 
 Top
DlTA
Отправлено: 18 Марта, 2011 - 16:59:31
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




еще вопрос

может кто подскажет, с чем связано то что старые функции в PHP принимают процедурный подход?
типа ничего не возвращают, результат заносится в параметры

например та же parse_str, на входе строка для разбора и по желанию массив для результата
а нашла не нашла, ничего не возвращает
 
 Top
EuGen Администратор
Отправлено: 18 Марта, 2011 - 17:09:40
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




С тем и связано:
DlTA пишет:
старые функции в PHP

А если точнее, то, сделаны они были в бытие старых версий PHP


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DlTA
Отправлено: 18 Марта, 2011 - 23:10:22
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




усем спасибки.
 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Марта, 2011 - 00:10:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




DlTA пишет:
метод перевода строки

nl2br??? Радость
DlTA пишет:
ничего не возвращает

if ($result != "" || $result !== null) { ...ага - в тему... }
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB