41 votes

Argent non formaté lors de l'analyse en PHP

Y a-t-il un moyen d'obtenir la valeur flottante d'une chaîne comme celle-ci : 75,25 €, autre que parsefloat(str_replace(',', '.', $var)) ?

Je veux que cela dépende de la langue actuelle du site, et parfois la virgule pourrait être remplacée par le point.

47voto

rlemon Points 10016

utiliser ereg_replace

$string = "$100,000";
$int = ereg_replace("[^0-9]", "", $string); 
echo $int;

extrants

1000000

function toInt($str)
{
    return (int)preg_replace("/\..+$/i", "", preg_replace("/[^0-9\.]/i", "", $str));
}

Mise à jour


<?php
$string = array("$1,000,000.00","$1 000 000.00","1,000 000.00","$123","$123 456 789","0.15¢");
foreach($string as $s) {
    echo $s . " = " . toInt($s) . "\n"; 
}
function toInt($str)
{
    return preg_replace("/([^0-9\\.])/i", "", $str);
}
?>

Extrants

$1,000,000.00 = 1000000.00
$1 000 000.00 = 1000000.00
1,000 000.00 = 1000000.00
$123 = 123
$123 456 789 = 123456789
0.15¢ = 0.15

et si vous le lancez comme un entier

<?php
$string = array("$1,000,000.00","$1 000 000.00","1,000 000.00","$123","$123 456 789","0.15¢");
foreach($string as $s) {
    echo $s . " = " . _toInt($s) . "\n";    
}
function _toInt($str)
{
    return (int)preg_replace("/([^0-9\\.])/i", "", $str);
}
?>

extrants

$1,000,000.00 = 1000000
$1 000 000.00 = 1000000
1,000 000.00 = 1000000
$123 = 123
$123 456 789 = 123456789
0.15¢ = 0

Donc, vous l'avez. une seule ligne, un remplacement. vous êtes prêt à y aller.

10voto

Rocket Hazmat Points 87407

Vous devrez supprimer le symbole de devise de la chaîne. PHP' s intval s'arrête au 1er caractère non numérique qu'il trouve.

$int = intval(preg_replace('/[^\d\.]/', '', '$100')); // 100

Bien que si vous avez une valeur comme $100.25, vous pouvez utiliser floatval la place.

$float = floatval(preg_replace('/[^\d\.]/', '', '$100.25')); // 100.25

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X