【问题标题】:The right way to do preg_match and preg_replace [duplicate]做 preg_match 和 preg_replace 的正确方法 [重复]
【发布时间】:2020-11-01 21:14:19
【问题描述】:

所以我一直在努力让我的旧网站恢复活力。

我开始用 preg 替换 ereg,但是已经很久没有写任何 PHP 了。

目前我被困在这个问题上:

$_POST['amount'] = preg_replace("/[^0-9/]",'',$_POST['amount']);
$_POST['amount'] = round($_POST['amount']);

if (!preg_match('/[^0-9]/', $_POST['amount'])) {
    echo "Invalid amount.";
}else {
     echo "Passed";
}

我不完全确定我哪里出错了。例如应该是!preg_match 还是preg_match

编辑: $_POST['amount'] 允许用户输入数字,如果尝试,则需要替换除数字以外的任何其他内容。

【问题讨论】:

  • @RiggsFolly 我看到你说的帖子和我的一样,但对我来说似乎没有意义,似乎与我想要实现的目标不同......?
  • is_numeric() 似乎是最简单的。或者filter_var()
  • 我不确定浮点数是什么,但用户需要输入像 1234 这样的数字。我尝试使用 preg_replace 和 preg_match 的目的是让脚本停止/替换以下条目 - 1,2)3 美元 4 到 1234。希望这是有道理的......
  • 在这段时间里,您可以简单地使用 preg_replace 并提出 preg_replace("/[^0-9]/",'',$_POST['amount']); 或者查看下面的答案,我注意到基本上是在说同样的事情
  • 如果他们用像£999.00 浮点数这样的便士输入钱,那么添加一个点就可以解决这个问题。 preg_replace("/[^0-9.]/",'', $_POST['amount']);

标签: php preg-replace preg-match


【解决方案1】:

不确定错误是什么(即当前输出是什么以及预期是什么)。但是,提示中的一个错误是第一个 preg_replace 的模式似乎有错字:/[^0-9/] 应该是 /[^0-9]/

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

其余的看起来像正确的语法(即preg_match 返回0,如果没有匹配)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 2012-12-29
    • 1970-01-01
    • 2016-05-23
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多