Advertisement
Guest User

коректно решение

a guest
Sep 3rd, 2014
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.47 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>Price List</title>
  5.     <meta charset="utf-8" />
  6. </head>
  7. <body>
  8. <form method="get" action="#">
  9.     Price List: <textarea name="priceList" rows="15" cols="120">  <table class="priceListTable">
  10.             <tr> <th>Product</th> <th>Category</th> <th>Price</th> <th>Currency</th></tr>
  11.             <tr> <td>8GB DDR3L 1600 KINGSTON SODIMM</td><td>RAM</td><td>87.00</td>  <td>  USD</td></tr>
  12.             <tr> <td>500GB Toshiba, SATA 6Gb/s, 7200rpm, 32MB</td> <td>HDD</td> <td>18.41</td> <td>BGN </td></tr>
  13.             <tr> <td>AMD A10-5800K X4 3.8GHz, 4MB Cache</td><td>CPU</td>   <td> 186.00</td> <td>BGN </td></tr>
  14.             <tr> <td> SSD 2.5&quot;, 120GB, Corsair F120 LS, SATA3</td> <td> HDD</td> <td> 180.50</td> <td> BGN </td>  </tr>
  15.             <tr> <td>500GB Toshiba, SATA 6Gb/s, 7200rpm, 32MB</td> <td>HDD</td> <td>28.41</td> <td>BGN </td> </tr>
  16.             <tr> <td>ASRock B75M-GL R2.0</td><td>motherboard</td> <td>  47.55</td> <td>EUR</td>  </tr>
  17.             <tr> <td>1TB Toshiba, SATA 6Gb/s, 7200rpm, 32MB</td> <td>HDD</td><td> 52.82 </td> <td>EUR</td></tr>
  18.             <tr> <td>16GB Micro SDHC, A-Data, Class10</td><td>RAM   </td><td>15.03</td><td>BGN</td></tr>
  19.             <tr> <td>500GB Toshiba, SATA 6Gb/s, 7200rpm, 32MB</td> <td>HDD</td> <td>38.41</td> <td>BGN </td>    </tr>
  20.         </table></textarea> <br/>
  21.     <input type="submit" value="Send" />
  22. </form>
  23.  
  24. <?php
  25. if (!isset($_GET['priceList'])) die;
  26.  
  27. $input = preg_replace("/\r?\n/m","", $_GET['priceList']);
  28. $input = preg_replace("/<\/tr>/","</tr>\n",$input);
  29. $pattern = "/<tr>\s*<td>(.*?)<\/td>\s*<td>(.*?)<\/td>?\s*<td>(.*?)<\/td>?\s*<td>(.*?)<\/td>?\s*<\/tr>/im";
  30. preg_match_all($pattern,$input,$match,PREG_SET_ORDER);
  31.  
  32. $obj = [];
  33. for ($i=0; $i<count($match); $i++) {
  34.     $match[$i] = array_map('trim',$match[$i]);
  35.     $arr = ["product"=>html_entity_decode($match[$i][1]), "price"=>$match[$i][3], "currency"=>$match[$i][4], "id"=>$i];
  36.  
  37.     if (isset($obj[$match[$i][2]])) {
  38.         array_push($obj[$match[$i][2]],$arr);
  39.     } else {
  40.         $obj[$match[$i][2]] = [$arr];
  41.     }
  42. }
  43.  
  44. function mySort($a, $b) {
  45.     if ($a['product'] == $b['product']) return ($a['id']>$b['id']) ? 1 : -1;
  46.     return ($a['product'] > $b['product']) ? 1 : -1;
  47. }
  48. foreach (array_keys($obj) as $key) {
  49.     uasort($obj[$key],'mySort');
  50.     $obj[$key] = array_values($obj[$key]);
  51.     foreach ($obj[$key] as &$arr) {
  52.         unset($arr['id']);
  53.     }
  54. }
  55. ksort($obj,SORT_ASC);
  56. echo json_encode($obj);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement