2013-04-16 3 views
0

Я пытаюсь создать небольшие функции для проверки каждого из моих элементов формы. Но у меня есть некоторые трудности. Я довольно новичок в PHP-функциях в целом.Функция проверки 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); 

Для этого новое значение, которое будет доступ за пределами функции, а затем вводятся в базу данных, мне нужно, чтобы вернуть его в конце функция? например Что-то вроде return $ surname; в конце функции?

Проще говоря - как я могу использовать это новое значение $ surname (а не начальное, введенное в форму) вне функции?

ответ

0

Вам нужно либо использовать глобальную переменную, либо pass $surname by reference, если вы хотите сделать это так, как вы ее сначала написали.

В качестве альтернативы вы можете передать измененную строку или вообще не строку, если она не удалась.

$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; 
} 
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; 
} 
+0

А, так что у меня есть это в верхней части моей проверки PHP -> if (isset ($ _ POST ['surname'])) {$ surname = $ _POST ['surname']; }. Означает ли это, что мне не нужно возвращать что-либо из функции, чтобы использовать это новое значение во всем мире? – Simo389

+0

$ фамилия будет доступна по всему файлу. Из-за проблем с областью вы должны объявить его глобальным в пользовательских функциях. http://php.net/manual/en/language.variables.scope.php – Lawson

1

Вы должны рассмотреть то, что вы действуете пытается сделать. На мой взгляд, вам, вероятно, понадобятся две функции isValidSurname, которые вернут логическое значение true или false, и formatSurname примет действительную фамилию и вернет ее правильно отформатированную.

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; 
} 

Таким образом, у вас есть четкие и описательные имена функций и каждая функция имеет единственную ответственность.

Смежные вопросы