Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_replace函数不再删除减号_Php - Fatal编程技术网

Php preg_replace函数不再删除减号

Php preg_replace函数不再删除减号,php,Php,我已经在我的页面上使用这个功能一段时间了,突然它不能正常工作 public function stripSignMinus($money) { return preg_replace('/[^\d-.]+/', '', $money); } 它应该去掉所有的字母、符号和减号 然而,它不再剥离负号。 我一直收到错误消息,preg_replace已被弃用 我想知道它是否没有删除减号,因为它已被弃用,所以我尝试了 return preg_replace_callback('/[^\d-.]+

我已经在我的页面上使用这个功能一段时间了,突然它不能正常工作

public function stripSignMinus($money)
{
    return preg_replace('/[^\d-.]+/', '', $money);
}
它应该去掉所有的字母、符号和减号

然而,它不再剥离负号。 我一直收到错误消息,preg_replace已被弃用

我想知道它是否没有删除减号,因为它已被弃用,所以我尝试了

return preg_replace_callback('/[^\d-.]+/','', $money);
然而,这根本不起作用。它不会移除任何东西。所以我猜我使用preg_replace_回调是错误的

我会说我不太擅长preg_替换表达式

我需要打电话给你

$functions->stripSignMinus("£-5");
替换引号中的内容并删除减号和货币符号。上述代码过去可以工作,但现在不再工作。 当然,引号中的项目也可以是字符串。

那怎么办

 function stripSignMinus($money)
{
    return preg_replace('/[^\d\.]+/','',$money);
}
在这里您可以测试结果

关于

 function stripSignMinus($money)
{
    return preg_replace('/[^\d\.]+/','',$money);
}

在这里,您可以测试结果

-
进行转义,如
\-
,以避免将其视为范围运算符或尝试返回preg\u replace('/[^\d\-.]+/',''$money);正如您所建议的,但它仍然保留负号inpreg_replace_callback()在其第二个参数中需要函数名。有关的详细信息:。顺便说一句,preg_replace没有被弃用,只有
/e
修饰符是如果你想替换所有不是数字的东西,为什么不干脆:
/[^\d]+/
?这确实有效,但它也删除了小数点。我需要小数点保留在像
\-
那样的
-
中,以避免将其视为范围运算符或尝试返回preg\u replace('/[^\d\-.]+/','$money));正如您所建议的,但它仍然保留负号inpreg_replace_callback()在其第二个参数中需要函数名。有关的详细信息:。顺便说一句,preg_replace没有被弃用,只有
/e
修饰符是如果你想替换所有不是数字的东西,为什么不干脆:
/[^\d]+/
?这确实有效,但它也删除了小数点。我需要小数点保持不变。只有在我没有货币符号的情况下,小数点才有效。如果我把-5放进去就行了,但如果我把-5放进去就不行了。我真的很希望preg_replace能够正常工作,就像它以前一样,我认为php更新杀死了它;var_转储(StripSign减去('12.10asdasd');var_dump(StripSign减去('5'));谢谢你,维塔利,这很有效。如果你把它作为一个答案,我可以投你一票。只有在我没有货币符号的情况下,这才有效。如果我把-5放进去就行了,但如果我把-5放进去就不行了。我真的很希望preg_replace能够正常工作,就像它以前一样,我认为php更新杀死了它;var_转储(StripSign减去('12.10asdasd');var_dump(StripSign减去('5'));谢谢你,维塔利,这很有效。如果你把它作为答案贴出来,我可以投你一票