Как найти самое маленькое число в коде?

Тема в разделе "Как сделать...", создана пользователем Urch, 4 апр 2013.

  1. Urch

    Urch Вебмастер

    Регистр.:
    3 янв 2008
    Сообщения:
    263
    Симпатии:
    73
    Имеется код вида:
    HTML:
    <table width="200" border="1">
      <tr>
        <td>Satellite C850-C1K</td>
        <td>63 972
    </td>
        <td>ButtonKZ
    </td>
      </tr>
      <tr>
        <td>Satellite C850-C1K</td>
        <td>65 800
    </td>
        <td>ТОО Reaching ray
    </td>
      </tr>
      <tr>
        <td>Satellite C850-C1K</td>
        <td>66 500
    </td>
        <td>Cals Computers
    </td>
      </tr>
    </table>
    Нужно средствами php найти строку с наименьшим числом и выделить ее цветом.
     
  2. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    PHP:
    <?
    $s='<table width="200" border="1">
      <tr>
        <td>Satellite C850-C1K</td>
        <td>63 972
    </td>
        <td>ButtonKZ
    </td>
      </tr>
      <tr>
        <td>Satellite C850-C1K</td>
        <td>65 800
    </td>
        <td>ТОО Reaching ray
    </td>
      </tr>
      <tr>
        <td>Satellite C850-C1K</td>
        <td>66 500
    </td>
        <td>Cals Computers
    </td>
      </tr>
    </table>'
    ;
     
    preg_match_all('/<td>\s*([0-9\s]+)\s*<\/td>/i'$s$a);
    if(
    count($a[1]) > 0){
        
    $min min($a[1]);
        
    $s preg_replace('/<td>\s*'.$min.'\s*<\/td>/i''<td><span style="color:red;">'.$min.'</span></td>'$s);
    }
    echo 
    $s;
     
    Urch нравится это.
  3. Urch

    Urch Вебмастер

    Регистр.:
    3 янв 2008
    Сообщения:
    263
    Симпатии:
    73
    а как найти наименьшее число и подсветить его в каждой таблице, если таких таблиц в одном документе несколько?
    Например:
    HTML:
    <table width="200" border="1">
      <tr>
        <td>Satellite C850-C1K</td>
        <td>63 972
    </td>
        <td>ButtonKZ
    </td>
      </tr>
      <tr>
        <td>Satellite C850-C1K</td>
        <td>65 800
    </td>
        <td>ТОО Reaching ray
    </td>
      </tr>
      <tr>
        <td>Satellite C850-C1K</td>
        <td>66 500
    </td>
        <td>Cals Computers
    </td>
      </tr>
    </table>
     
    <table width="200" border="1">
      <tr>
        <td>Satellite C850-C1K</td>
        <td>63 972
    </td>
        <td>ButtonKZ
    </td>
      </tr>
      <tr>
        <td>Satellite C850-C1K</td>
        <td>65 800
    </td>
        <td>ТОО Reaching ray
    </td>
      </tr>
      <tr>
        <td>Satellite C850-C1K</td>
        <td>66 500
    </td>
        <td>Cals Computers
    </td>
      </tr>
    </table>
     
  4. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    тогда разделить на таблицы и искать в каждой, отметить и соединить
    PHP:
    <?
     
    $s '<table width="200" border="1">
          <tr>
            <td>Satellite C850-C1K</td>
            <td>63 972
        </td>
            <td>ButtonKZ
        </td>
          </tr>
          <tr>
            <td>Satellite C850-C1K</td>
            <td>65 800
        </td>
            <td>ТОО Reaching ray
        </td>
          </tr>
          <tr>
            <td>Satellite C850-C1K</td>
            <td>66 500
        </td>
            <td>Cals Computers
        </td>
          </tr>
        </table>
     
        <table width="200" border="1">
          <tr>
            <td>Satellite C850-C1K</td>
            <td>63 972
        </td>
            <td>ButtonKZ
        </td>
          </tr>
          <tr>
            <td>Satellite C850-C1K</td>
            <td>65 800
        </td>
            <td>ТОО Reaching ray
        </td>
          </tr>
          <tr>
            <td>Satellite C850-C1K</td>
            <td>66 500
        </td>
            <td>Cals Computers
        </td>
          </tr>
        </table>
     
    '
    ;
     
    $sa explode('<table'$s);
    foreach(
    $sa as $id=>$val){
        
    preg_match_all('/<td>\s*([0-9\s]+)\s*<\/td>/i'$val$a);
        if(
    count($a[1]) > 0){
            
    $min min($a[1]);
            
    $sa[$id] = preg_replace('/<td>\s*'.$min.'\s*<\/td>/i''<td><span style="color:red;">'.$min.'</span></td>'$val);
        }
    }
    $s implode('<table'$sa);
    echo 
    $s;
     
    latteo и Urch нравится это.
  5. Urch

    Urch Вебмастер

    Регистр.:
    3 янв 2008
    Сообщения:
    263
    Симпатии:
    73
    а можно сделать так чтобы подсвечивалась цена в пределах одного товара в данном случае это SATELLITE C850-D4K, C850-C1K и L870D-D3W
    Пример кода:



    Добавил одно новое поле, теперь цены не выделяются

     
  6. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    там таблица в первом столбике название, во втором цена, так что можно универсально для любых названий, берём в массив в котором индекс будет название, значения будут цены, находим минимальное значение и заменяем в тексте красным
    PHP:
    $s '<table ...';
    $m = array();
    preg_match_all('/<tr>\s*<td>([^<]+)<\/td>\s*<td>([^<]+)<\/td>/i'$s$a);
    if(
    count($a[1]) > 0){
        foreach(
    $a[1] as $id=>$val){
            
    $m[$val][] = $a[2][$id];
        }
     
        foreach(
    $m as $name=>$price){
            
    $min min($m[$name]);
            
    $s preg_replace('/<tr>\s*<td>'.$name.'<\/td>\s*<td>'.$min.'<\/td>/i''<tr><td>'.$name.'</td><td><span style="color:red;">'.$min.'</span></td>'$s);
        }
    }
    echo 
    $s;
     
    latteo и Urch нравится это.