0

我正在尝试创建小函数来验证我的每个表单元素。但我遇到了一些困难。一般来说,我对 PHP 函数相当陌生。

目前我正在尝试为表单中的“姓氏”条目创建一个验证函数。这就是我所拥有的:

//Call surname validation function
If (validSurname($surname) === false) {
    $mistakes[] = 'Your surname is either empty or Enter only ALPHABET characters.';
} 
function validSurname($surname) {
    $surname = trim($surname);
    if (empty($surname) || (!ctype_alpha(str_replace(' ', '', $surname)))) {
        $isValid = false;
    } else {
        //accept surname entry and sanitize it
        $surname = mysql_real_escape_string(stripslashes($surname));
    }
    return $isValid;
}

所以目前我使用类似的东西来验证电子邮件,它工作正常。但现在我想通过某些阶段实际传递姓氏,例如:

$surname = trim($surname);

对于要在函数外部访问然后输入数据库的新值,我是否需要在函数末尾返回它?例如返回 $surname 之类的东西;在函数的末尾?

简而言之 - 我如何在函数之外使用 $surname 的这个新值(而不是在表单中输入的初始值)?

4

4 回答 4

1

您应该考虑您的功能正在尝试做什么。在我看来,您可能需要两个函数isValidSurname,它们将返回一个布尔值 true 或 false,并formatSurname采用有效的姓氏并将其返回正确的格式。

于 2013-04-16T21:58:22.480 回答
0

您可以更明确地使用函数名称并返回新值。

例如:

function isSurnameValid($surname) {
    return (empty($surname) || (!ctype_alpha(str_replace(' ', '', $surname)))) ? false : true;
}

function cleanSurname($surname) {
    $surname = mysql_real_escape_string(stripslashes(trim($surname)));
    return $surname;
}

这样你就有了清晰的、描述性的函数名称,并且每个函数都有一个单一的职责。

于 2013-04-16T22:00:38.490 回答
0

您应该在函数内将其设置为全局。不过,我不会使用与您用作函数参数的变量名称相同的变量名称。如果您想弄乱 $surnameVar,请执行以下操作:

function validSurname($surname) {
    global $surnameVar;
    $surnameVar = trim($surname);
    if (empty($surname) || (!ctype_alpha(str_replace(' ', '', $surname)))) {
        $isValid = false;
    } else {
        //accept surname entry and sanitize it
        $surname = mysql_real_escape_string(stripslashes($surname));
    }
    return $isValid;
}
于 2013-04-16T21:57:23.470 回答
0

您要么必须使用全局变量,要么通过引用传递 $surname如果您想按照您第一次编写它的方式进行操作。

或者,您可以传回修改后的字符串,或者如果失败则根本不传回字符串。

$surname = validSurname($surname);
if (strlen($surname) == 0) {
    $mistakes[] = 'Your surname is either empty or Enter only ALPHABET characters.';
}

function validSurname($surname) {
    $surname = trim($surname);
    if (empty($surname) || (!ctype_alpha(str_replace(' ', '', $surname)))) {
        $surname = '';
    } else {
        //accept surname entry and sanitize it
        $surname = mysql_real_escape_string(stripslashes($surname));
    }
    return $surname;
}
于 2013-04-16T21:58:57.507 回答