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

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

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

 

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

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

тема: Помогите различить вывод значений
 
 автор: TetRiska   (18.10.2009 в 14:08)   письмо автору
 
 

Всем привет. Вот обрабатываю 3 варианта цен, которые хранятся в базе:
<?php
  $str 
'<span class="price">220, 180, 120</span> <u><b>грн.</b></u>';
  
$pattern '|<span class=\"price\">(.*?)</span>|'
  
preg_match_all($pattern$str$out);
  echo 
"<pre>";
  
print_r($out);
  echo 
"</pre>";
?>

<?php
  $str 
'<b>от</b> <span class="price">120</span> <u><b>грн.</b></u>';
  
$pattern '|<span class=\"price\">(.*?)</span>|'
  
preg_match_all($pattern$str$out);
  echo 
"<pre>";
  
print_r($out);
  echo 
"</pre>";
?>

<?php
  $str 
'<b>от</b> <span class="price">150</span> <b>до</b> <span class="price">250</span> <u><b>грн.</b></u>';
  
$pattern '|<span class=\"price\">(.*?)</span>|'
  
preg_match_all($pattern$str$out);
  echo 
"<pre>";
  
print_r($out);
  echo 
"</pre>";
?>

Вот как выглядит вывод:
Array
(
    [0] => Array
        (
            [0] => 220, 180, 120
        )

    [1] => Array
        (
            [0] => 220, 180, 120
        )

)

Array
(
    [0] => Array
        (
            [0] => 120
        )

    [1] => Array
        (
            [0] => 120
        )

)

Array
(
    [0] => Array
        (
            [0] => 150
            [1] => 250
        )

    [1] => Array
        (
            [0] => 150
            [1] => 250
        )

)

Как мне отличить допустим первый вывод от второго? т.к. они разные..первый содержит значение "фиксированый", а второй "от"...все мне это нужно для заполнения полей на форме...т.е. выбираю изделие и из базы дергает значение цены, и это значение сперва очищается от хтмл кода и потом должно поместится в соответствующие поле...а их 3....
1-е для "фиксированного" значения
2-е для "от"
3-е для "до"
Прошу помощи.

  Ответить  
 
 автор: heed   (18.10.2009 в 18:57)   письмо автору
 
   для: TetRiska   (18.10.2009 в 14:08)
 

>3 варианта цен, которые хранятся в базе
как-то непродуманно держать в базе данных одно и то-же поле с тремя видами записей такого html
из которого нужны только цифры
, и не понятно как одним и тем-же выражением совпадающем в некоторых случаях два раза можно вообще пройтись сразу напимер по нескольким рядам.(что с третьим видом даст цифру 2 в результате возвращаемом preg_match_all)

Вообще многое не понятно из вопроса
нужно именно просто отличить, т.е проверить на наличие слова "от" или ещё и +слова "до",
или нужно получить цифры при этом получив ещё подтверждение вида записи
что-то вроде получения массива
preg_match('#^(<b>от</b>\s*)?<span[^>]*>([^<]+)</span>\s*(?:<b>до</b><span[^>]*>([^<]+)</span>)?#', .....непроверял
где $1 будет говорить о том было-ли "от" а значение в $3 подтвердит что было "до"
, или просто приделайте к первому выражению (<b>от</b>\s*)? получите $1 как отличие первого от второго

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

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