首页 > 解决方案 > 带有点和运算符的正则表达式 PHP 十进制数

问题描述

我有一个列表,我想检索其中的所有十进制数字。它们的存储方式如下 +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 中首先检索选项名称,其次是运算符,然后是十进制数?谢谢。

标签: phpregex

解决方案


您甚至不需要在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

演示


推荐阅读