代码之家  ›  专栏  ›  技术社区  ›  Pablo DelaNoche

带点和运算符的正则表达式PHP十进制数[重复]

  •  0
  • Pablo DelaNoche  · 技术社区  · 6 年前

    我有一个列表,我想检索其中的所有十进制数。它们的存储方式为+900.00或-240.30。
    它们都有一个运算符“+”或“-”。

    $liste = "Pack Eclairage : Lave-phares Projecteurs Bi-X\u00e9non 35W directionnels Feux AV eclairage diurne LED : -400.00Etriers de freins Rouge : +200.00|Jantes en alliage 19\" Performance Noires (avec Pneus Run-On Flat) : +900.00|Pack Confort : Syst\u00e8me d'entr\u00e9e sans cl\u00e9s (conducteur et passager) Eclairage des poign\u00e9es de portes Compartiment porte-objets c\u00f4t\u00e9 conducteur Pare-soleil conducteur avec illumination : +580.00|Peinture Pastel Extra-s\u00e9rie Blanc Alfa : +650.00|Vitres AR privatives : +390.00";
    $tab_liste = explode("|", $liste);
    
    foreach($tab_liste as $option) {
        // regex here 
    }
    

    如何在PHP中检索第一个选项名,第二个运算符,第三个十进制数? 谢谢。

    3 回复  |  直到 6 年前
        1
  •  1
  •   Tim Biegeleisen    6 年前

    你甚至不需要使用 explode() preg_match_all 可以处理跨给定输入字符串执行多个正则表达式匹配:

    $liste = "Pack Eclairage : Lave-phares Projecteurs Bi-X\u00e9non 35W directionnels Feux AV eclairage diurne LED : -400.00Etriers de freins Rouge : +200.00|Jantes en alliage 19\" Performance Noires (avec Pneus Run-On Flat) : +900.00|Pack Confort : Syst\u00e8me d'entr\u00e9e sans cl\u00e9s (conducteur et passager) Eclairage des poign\u00e9es de portes Compartiment porte-objets c\u00f4t\u00e9 conducteur Pare-soleil conducteur avec illumination : +580.00|Peinture Pastel Extra-s\u00e9rie Blanc Alfa : +650.00|Vitres AR privatives : +390.00";
    preg_match_all ("/([+\-])(\d+(\.\d+)?)/", $liste, $array);
    
    for ($i=0; $i < count($array[1]); $i++) {
        echo $array[1][$i] . ", " . $array[2][$i] . "\n";
    }
    
    -, 400.00
    +, 200.00
    +, 900.00
    +, 580.00
    +, 650.00
    +, 390.00
    

    Demo

        2
  •  1
  •   A l w a y s S u n n y    6 年前

    你可以用它 regex /[+-]\d+\.?\d*/m

    <?php
    $re = '/[+-]\d+\.?\d*/m';
    $str = 'Pack Eclairage : Lave-phares Projecteurs Bi-X\\u00e9non 35W directionnels Feux AV eclairage diurne LED : -400.00Etriers de freins Rouge : +200.00|Jantes en alliage 19\\" Performance Noires (avec Pneus Run-On Flat) : +900.00|Pack Confort : Syst\\u00e8me d\'entr\\u00e9e sans cl\\u00e9s (conducteur et passager) Eclairage des poign\\u00e9es de portes Compartiment porte-objets c\\u00f4t\\u00e9 conducteur Pare-soleil conducteur avec illumination : +580.00|Peinture Pastel Extra-s\\u00e9rie Blanc Alfa : +650.00|Vitres AR privatives : +390.00';
    preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
    // Print the entire match result
    $result = call_user_func_array('array_merge',$matches);
    print_r($result);
    ?>
    

    输出

    Array ( 
     [0] => -400.00 
     [1] => +200.00
     [2] => +900.00 
     [3] => +580.00 
     [4] => +650.00 
     [5] => +390.00
    )
    

    https://3v4l.org/X2DK6

        3
  •  0
  •   Oto Shavadze    6 年前
        $liste = "Pack Eclairage : Lave-phares Projecteurs Bi-X\u00e9non 35W directionnels Feux AV eclairage diurne LED : -400.00Etriers de freins Rouge : +200.00|Jantes en alliage 19\" Performance Noires (avec Pneus Run-On Flat) : +900.00|Pack Confort : Syst\u00e8me d'entr\u00e9e sans cl\u00e9s (conducteur et passager) Eclairage des poign\u00e9es de portes Compartiment porte-objets c\u00f4t\u00e9 conducteur Pare-soleil conducteur avec illumination : +580.00|Peinture Pastel Extra-s\u00e9rie Blanc Alfa : +650.00|Vitres AR privatives : +390.00";
        $tab_liste = explode("|", $liste);
    
        foreach($tab_liste as $option) {
            preg_match_all("#((\-|\+)[\d\.]+)#", $option, $matches);
           var_dump($matches[0]);
           echo "<br>";
        }