-3

我正在尝试从 PHP 中的变量中删除除数字之外的所有内容。我尝试使用正则表达式,很快谷歌就会出现各种各样的人告诉我也使用正则表达式,但似乎没有正则表达式起作用。我正在使用preg_replace('/\D/', '', $amount);. 我尝试了各种不同的正则表达式,最值得注意的是/\D/, /[\D]/, /^\d/, /[^\d]/, and /[^0-9]/,但它们都不起作用。

编辑:我找到了为什么它不起作用!我的印象是preg_replace('/\D/', '', $amount);替换$amount,但我现在看到我必须$new_amount = preg_replace('/\D/', '', $amount);使用 $new_amount。愚蠢,我知道。不管怎么说,还是要谢谢你!

4

4 回答 4

3
<?php
$amount = '$42,3034534';
// remove extra chars
$str = preg_replace('/[^0-9.,]/', '', $amount);
// replace commas with periods, because PHP doesn't like commas as decimals
$str = preg_replace('/,/', '.', $str);
// convert to float and multiply by 100, use floor() to get rid of fractions of a cent
$cents = floor(floatval($str) * 100);
echo $cents;
// OR
echo floor(floatval(preg_replace('/,/', '.', preg_replace('/[^0-9.,]/', '', $amount))) * 100);
//output: 4230

另外,不要再说“它不起作用”。它怎么不工作?你得到什么结果是不正确的?

于 2013-02-12T17:38:57.957 回答
1

尝试,

$amount = "abc12de3";
$number = preg_replace("/\D/", "", $amount);
echo $number;

123
于 2013-02-12T17:30:50.467 回答
0
preg_replace('/[^0-9]/', '', $amount);

这对你不起作用?

于 2013-02-12T17:27:15.413 回答
0

试试下面的例子。这将从您的字符串中删除任何不是数字的内容。

<?php
$string = '!$@^$!!@$^0ls1jlsasl2alfls3ldf4!#$^5jf6k%7==+!*&$#8@(#$(9fdf';
echo preg_replace('/[^\d]+/', '', $string);
//Output: 0123456789

您将需要阅读函数preg_replace()

于 2013-02-12T17:27:48.830 回答