Php 绕过错误,只显示输入的数字格式参数文本
我知道这需要一个数字作为第一个参数。Php 绕过错误,只显示输入的数字格式参数文本,php,Php,我知道这需要一个数字作为第一个参数。 我有一个表单,其中有许多输入文本字段,需要数字作为答案,并输出使用数字格式格式化的数字。 但是如果用户输入文本,输出就会抛出一个错误。 警告:number\u format()要求参数1为浮点,即第519行/path/to/file/script.php中给出的字符串 如果用户输入了文本,有没有办法绕过此错误,只显示文本?您可以使用下面的用户定义功能 function foo($val) { if (is_numeric($val)) {
我有一个表单,其中有许多输入文本字段,需要数字作为答案,并输出使用数字格式格式化的数字。
但是如果用户输入文本,输出就会抛出一个错误。
警告:number\u format()要求参数1为浮点,即第519行/path/to/file/script.php中给出的字符串
如果用户输入了文本,有没有办法绕过此错误,只显示文本?您可以使用下面的用户定义功能
function foo($val)
{
if (is_numeric($val))
{
echo number_format($val);
}
else
{
echo $val;
}
}
并在需要时调用此函数您可以使用下面的用户定义函数
function foo($val)
{
if (is_numeric($val))
{
echo number_format($val);
}
else
{
echo $val;
}
}
并在需要时调用此函数您可以使用HTML5输入类型number来限制仅输入数字:
输入type=“number”name=“textname”
这只适用于HTML5投诉浏览器。确保html文档的doctype为:!DOCTYPE html您可以使用HTML5输入类型number来仅限制数字条目:
输入type=“number”name=“textname”
这只适用于HTML5投诉浏览器。确保html文档的doctype为:!DOCTYPE htmlPHP有一个类,当您想要将错误转换为异常时,可以使用该类。同一页显示了如何:
function exception_error_handler($severity, $message, $file, $line) {
if (!(error_reporting() & $severity)) {
// This error code is not included in error_reporting
return;
}
throw new ErrorException($message, 0, $severity, $file, $line);
}
set_error_handler("exception_error_handler");
try {
// Normal code that raises errors
} catch (ErrorException $e) {
//Handle it
}
restore_error_handler();
您案例的具体替代方案:
function numberFormatOrDefault($number , $decimals = 0 , $dec_point = "." , $thousands_sep = ",") {
if (is_numeric($number)) {
return number_format($number, $decimals, $dec_point, $thousands_sep);
} else {
return $number;
}
}
$str1 = "123.2";
$str2 = "not a number";
echo numberFormatOrDefault($str1,4); //123.2000
echo numberFormatOrDefault($str2); //not a number
然后,您可以用numberFormatOrDefault
调用替换number\u格式的调用(只需简单的查找和替换即可)
我更喜欢第二种方法,因为它修复了特定的问题,而不是捕获可能发生的每个PHP错误,因为它不是解决此问题的理想方法 PHP有一个类,用于将错误转换为异常。同一页显示了如何:
function exception_error_handler($severity, $message, $file, $line) {
if (!(error_reporting() & $severity)) {
// This error code is not included in error_reporting
return;
}
throw new ErrorException($message, 0, $severity, $file, $line);
}
set_error_handler("exception_error_handler");
try {
// Normal code that raises errors
} catch (ErrorException $e) {
//Handle it
}
restore_error_handler();
您案例的具体替代方案:
function numberFormatOrDefault($number , $decimals = 0 , $dec_point = "." , $thousands_sep = ",") {
if (is_numeric($number)) {
return number_format($number, $decimals, $dec_point, $thousands_sep);
} else {
return $number;
}
}
$str1 = "123.2";
$str2 = "not a number";
echo numberFormatOrDefault($str1,4); //123.2000
echo numberFormatOrDefault($str2); //not a number
然后,您可以用numberFormatOrDefault
调用替换number\u格式的调用(只需简单的查找和替换即可)
我更喜欢第二种方法,因为它修复了特定的问题,而不是捕获可能发生的每个PHP错误,因为它不是解决此问题的理想方法 为什么不进行打字检查呢if(is_numeric($input)){echo number_format($input)}else{echo$input}
大约有35行这样的代码。这不能用一次尝试捕获吗?为什么不只是类型检查呢if(is_numeric($input)){echo number_format($input)}else{echo$input}
大约有35行这样的代码。这不能用一个try-catch捕获吗?你也可以在html5中使用pattern属性:你也可以在html5中使用pattern属性: