我该如何优化此代码?

Eri*_*icP 0 php validation optimization

如何优化以下PHP代码?

<?php

if(strlen($_POST['myName']) < 2 || isNumeric($_POST['myName']))
{
    echo "Please fill in your name!";
    exit();
}

if(!is_numeric($_POST['myAge']) || strlen($_POST['myAge'] < 1))
{
    echo "Please enter only digits!";
    exit();
}

if(strlen($_POST['myRes']) < 2 || isNumeric($_POST['myRes']))
{
    echo "Please enter something!";
    exit();
}

echo "Hi " . $_POST['myName'] . "! you are " . $_POST['myAge'] . " years old and live in " . $_POST['myRes'] . "? Nice to meet you!";

?> 
Run Code Online (Sandbox Code Playgroud)

如果我想测试100个输入怎么办?如何以最佳方式进行测试?

use*_*291 8

不了解速度,但从风格的角度来看,你的代码可以像这样改进(当然是很多可能的方法之一).

function p($key) {
    return isset($_POST[$key]) ? trim($_POST[$key]) : null;
}

$name = p('myName');
$age  = intval(p('myAge'));
$res  = p('myRes');

$err  = array();

if(!preg_match('~^\w{3,}+$~', $name))
    $err[] = "Please fill in your name!";

if($age < 3 || $age > 99)
    $err[] = "Please enter a valid age";

if(!preg_match('~^\w{3,}+$~', $res))
    $err[] = "Please fill in your location!";

if($err)
    echo implode("<br>", $err);
else
    echo "Hi $name! you are $age years old and live in $res? Nice to meet you!";
Run Code Online (Sandbox Code Playgroud)

请注意重点

  • 避免在整个代码中直接访问像$ _POST这样的超级全局
  • 使用正则表达式来验证字符串
  • 期望数字时强制整数转换
  • 避免退出()
  • 使用字符串插值而不是连接