我有一个列表,我想检索其中的所有十进制数字。它们的存储方式为+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中首先检索选项名称,其次检索运算符,然后再检索十进制数字? 谢谢。
答案 0 :(得分:1)
您甚至不需要在这里使用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
答案 1 :(得分:1)
您可以使用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
)
答案 2 :(得分:0)
$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>";
}