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

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

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

 

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

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

тема: текст между HTML тегами
 
 автор: zeeg   (20.06.2009 в 00:48)   письмо автору
 
 

Всем привет.
Помогите пожалуйста вытащить текст из страницы: название страны, ее ID и значение minimum из option.


<option>выберите страну</option>
                                                                        
                                                                        <script language="javascript">

                                                                                var id =32582
                                                                                var reg = '2'
                                                                                region[id] = reg;
                                                                        </script>
                                                                        <option value="32582"  minimum="1">
                                                                            <span>Australia</span>

                                                                        </option> 



заранее спасибо за помощь.

  Ответить  
 
 автор: ZeeG   (20.06.2009 в 16:49)   письмо автору
 
   для: zeeg   (20.06.2009 в 00:48)
 

Смог отдельно вытащить только значение value и minimum:
  $pattern = "!<option[^>]*\svalue=[\"']?(\d{5}+)[\"']?[\"']?[^>]*>!is";  //[^>\"'#\s]
  preg_match_all($pattern, $content, $c);

echo "<PRE>";
print_r($c[1]);

  $pattern = "!<option[^>]*\sminimum=[\"']?(\d{1}+)[\"']?[\"']?[^>]*>!is";  //[^>\"'#\s]
  preg_match_all($pattern, $content, $m);

echo "<PRE>";
print_r($m[1]);



А вот саму страну вытащить не удаётся тк нужно обозначить, что страна заключена в span, который в свою очередь стоит внутпи option, имеющий value и minimun.

Кто-нить может помочь?

  Ответить  
 
 автор: Qiao   (21.06.2009 в 13:11)   письмо автору
 
   для: ZeeG   (20.06.2009 в 16:49)
 

Всё это лучше сделать одним выражением:
<option value=\"(\d+)\" minimum=\"(\d+)\">.+?<span>(.+?)</span>.+?</option>

  Ответить  
 
 автор: ZeeG   (21.06.2009 в 15:11)   письмо автору
 
   для: Qiao   (21.06.2009 в 13:11)
 

Выводит четыре пустых массива.

  Ответить  
 
 автор: Qiao   (21.06.2009 в 16:08)   письмо автору
 
   для: ZeeG   (21.06.2009 в 15:11)
 

Всё работает
preg_match_all("|<option value=\"(\d+)\"  minimum=\"(\d+)\">.+?<span>(.+?)</span>.+?</option>|s", $text, $matches);
print_r ($matches);


--
Наверное из за того, что в первом случае HTML съел двойной пробел перед minimum

  Ответить  
 
 автор: ZeeG   (21.06.2009 в 17:14)   письмо автору
 
   для: Qiao   (21.06.2009 в 16:08)
 

Да, все работает.
Спасибо Qiao

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

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