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

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

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Парсинг SELECT

Сообщения:  [1-4] 

 
 автор: Ильдар   (01.11.2010 в 18:46)   письмо автору
 
   для: Tonik992   (01.11.2010 в 17:58)
 

вот честно, я так и грешил на этот модификатор, только не мог дойти до него. Спасибо огромное! Теперь понял

  Ответить  
 
 автор: Tonik992   (01.11.2010 в 17:58)   письмо автору
 
   для: Ильдар   (01.11.2010 в 16:12)
 

Сравни свою регулярку и мною переделанную:

<?php
preg_match_all('|<option.*value="(.*)".*selcode="(.*)".*>(.*)</option>|isU', $text, $out5); //твоя
preg_match_all('|<option\s*value="([^\"]+)"\s*selcode="([^\"]+)".*>(.+)</option>|isU', $string, $out5); //моя
?>

результат моей:
<?php
Array
(
    [0] => Array
        (
            [0] => <option value="050446340" selcode="50446340" imgurl="">black</option>
            [1] => <option value="050446342" selcode="50446342" imgurl="">grey</option>
            [2] => <option value="050446343" selcode="50446343" imgurl="">white</option>
            [3] => <option value="050446341" selcode="50446341" imgurl="">red</option>
        )

    [1] => Array
        (
            [0] => 050446340
            [1] => 050446342
            [2] => 050446343
            [3] => 050446341
        )

    [2] => Array
        (
            [0] => 50446340
            [1] => 50446342
            [2] => 50446343
            [3] => 50446341
        )

    [3] => Array
        (
            [0] => black
            [1] => grey
            [2] => white
            [3] => red
        )

)
?>


Твой результат получился неожиданным из-за модификатора U.. Посмотри подробнее, как работают жадные/нежадные квантификаторы

  Ответить  
 
 автор: .....   (01.11.2010 в 17:37)
 
   для: Ильдар   (01.11.2010 в 16:12)
 

всмысле почему совпадает с value="" из одного тега и selcode="50446340 из другого ?

<option value="">----------</option>
<option value="050446340" selcode="50446340" imgurl="">black</option>

нужно добавлять header('content-type: text/plain'); в начале таких скриптов с print_r() или var_dump()
, или смотреть исходный html-код в браузере
может быть надо внутри тега [^>*] вместо .*

  Ответить  
 
 автор: Ильдар   (01.11.2010 в 16:12)   письмо автору
 
 

Имеется код:
<select name="select0" id="select0" style="height:18; font-size:8pt ; color:#555555" onChange="javascript:checkSelValue(1, 'F');">
<option value="">Please select.</option>
<option value="">----------</option>
<option value="050446340" selcode="50446340" imgurl="">black</option>
<option value="050446342" selcode="50446342" imgurl="">grey</option>
<option value="050446343" selcode="50446343" imgurl="">white</option>
<option value="050446341" selcode="50446341" imgurl="">red</option>
</select>


Хочу вытащить value, selcode и имя option
Пробую:
<?php preg_match_all('|<option.*value="(.*)".*selcode="(.*)".*>(.*)</option>|isU', $text, $out5); ?>

Так результат получается кривой:
Array
(
[0] => Array
(
[0] => Please select. ---------- Black
[1] => Navy
[2] => Brown
[3] => Gray
)

[1] => Array
(
[0] =>
[1] => 050446342
[2] => 050446343
[3] => 050446341
)

[2] => Array
(
[0] => 50446340
[1] => 50446342
[2] => 50446343
[3] => 50446341
)

[3] => Array
(
[0] => Black
[1] => Navy
[2] => Brown
[3] => Gray
)

)

НЕ ПОЙМУ ГДЕ Я СДЕЛАЛ НЕПРАВИЛЬНО???

  Ответить  

Сообщения:  [1-4] 

Форум разработан IT-студией SoftTime