Je pense que vous feriez mieux de laisser les expressions régulières hors du mixage.
Ce que je ferais est de convertir la valeur en int et arrondir la décimale, puis vérifier si elle est négative. Je voudrais également vérifier si le premier caractère est un signe dollar et, si oui, il suffit de l'enlever. Le code serait plus simple et plus lisible de cette façon, et si quelqu'un entrait 12.34512 ou .1, le système fonctionnerait toujours.
//untested
$amount = "$0.12"
if($amount && $amount[0] == '$') {
ltrim($amount, '$');
}
$int_amount = (int) $amount;
$int_amount = round($int_amount, 2);
if($amount <= 0) {
//error
}
Cela étant dit, je ne sais pas si vous avez à utiliser regexp pour une raison quelconque (comme si vous avez une fonction de validation qui prend une valeur et regexp comme arguments), mais dans un cas comme Je pense que le fait d'être libéral dans le format des prix serait préférable pour ne pas dire aux utilisateurs qu'ils ont entré un «montant invalide» lorsqu'ils ont entré 12 cents sans zéro.
Vous avez raison. Bonne prise! – hitfactory
Cela fonctionne bien moi. Je vous remercie :) – Chinmay235