试图删除除数字之外的所有内容,但正则表达式似乎不起作用

时间:2013-02-12 17:22:40

标签: php regex

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

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

4 个答案:

答案 0 :(得分: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

另外,请停止说“它不起作用”。 如何不起作用?你得到的结果是不正确的?

答案 1 :(得分:1)

尝试,

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

给出

123

答案 2 :(得分:0)

preg_replace('/[^0-9]/', '', $amount);

这不适合你吗?

答案 3 :(得分:0)

尝试以下示例。这将删除字符串中不是数字的任何内容。

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

您需要阅读preg_replace()函数。