我正在尝试从PHP中的变量中删除除数字之外的所有内容。我尝试使用正则表达式,一个快速的谷歌出现了各种各样的人告诉我也使用正则表达式,但没有正则表达式似乎工作。我正在使用preg_replace('/\D/', '', $amount);
。我尝试了各种不同的正则表达式,最值得注意的是/\D/
,/[\D]/
,/^\d/
,/[^\d]/
和/[^0-9]/
,但它们都不起作用。
编辑:我发现为什么它不起作用!我的印象是preg_replace('/\D/', '', $amount);
将替换 $ amount,但我现在看到我必须$new_amount = preg_replace('/\D/', '', $amount);
并使用$ new_amount。愚蠢,我知道。不管怎样,谢谢!
答案 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()函数。