Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Парсинг значений value и имени из <option>
 
 автор: maxfade   (14.02.2012 в 11:04)   письмо автору
 
 

Добрый день.

Имею такой select:
<select size="5" name="Filter" multiple="">
  <option value="">(все)</option>
  <option value="64">Параметр 1</option>
  <option value="65">Параметр 2</option>
  <option value="66">Параметр 3</option>
</select>


Он простой, но у меня возникли проблемы с парсингом из него данных.

На выходе надо получить массив из value и названия option:
array(
    "64" => "Параметр 1", 
    "65" => "Параметр 2",
    "66" => "Параметр 3"
);


Прошу помощи в данной задачке.

Заранее спасибо.

  Ответить  
 
 автор: cheops   (14.02.2012 в 13:02)   письмо автору
 
   для: maxfade   (14.02.2012 в 11:04)
 

Можно начать отталкиваться от следующего скрипта
<?php
  $text 
'<select size="5" name="Filter" multiple=""> 
  <option value="">(все)</option> 
  <option value="64">Параметр 1</option> 
  <option value="65">Параметр 2</option> 
  <option value="66">Параметр 3</option> 
</select>'
;
  
$pattern "|value=\"(\d+)\">([^<]+)</option>|";
  
preg_match_all($pattern$text$out);
  unset(
$out[0]);
  echo 
"<pre>";
  
print_r($out);
  echo 
"</pre>";
?>

  Ответить  
 
 автор: maxfade   (15.02.2012 в 14:14)   письмо автору
 
   для: cheops   (14.02.2012 в 13:02)
 

Спасибо, а изначально можно как-то сделать массив как я писал в первом посте.

Пока получилось сделать так, но после preg_match_all:

<?php
for($i=0;$i<count($out[1]);$i++) $v[$out[1][$i]] = $out[2][$i];
?>


Получаем:

Array
(
    [64] => Телевидение
    [65] => Интернет
    [66] => Телефония
)

  Ответить  
 
 автор: Sfinks   (15.02.2012 в 16:10)   письмо автору
 
   для: maxfade   (15.02.2012 в 14:14)
 

после preg_match_all нужно выполнить еще
$new_arr = array_combine($out[1],$out[2]);

  Ответить  
 
 автор: maxfade   (16.02.2012 в 09:07)   письмо автору
 
   для: Sfinks   (15.02.2012 в 16:10)
 

Спасибо, что-то раньше не обращал внимание на данную функцию :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования