2

我基本上是在玩 OOP,当我开始遇到问题清理然后执行进一步验证时,我正在创建一种验证和清理输入的方法。我正在寻找的是获取发布的$_POST['name']数据,清理输入以删除任何数字并验证留下的数据既不是数字字符也不是null数字字符。

但是我无法将经过清理的输入保存到$sanitised,它似乎是空的,但是当我替换时

$sanitised=$fv->noNumbers($_POST['name']);

$sanitised=preg_replace('/[0-9]/', '', $_POST['name']);

一切正常,所以我认为我在这个$sanitised变量中搞砸了一些东西。

我想学习所以要么解决这个问题,要么“你是个白痴,做错了”,将不胜感激。

<?php
    class formSanitise {

        public function noNumbers($value) {
            $value = preg_replace('/[0-9]/', '', $value);
        }
        public function isEmpty($value) {
                    return (!isset($value) || trim($value) == '') ? true : false;
        }
        public function isAlpha($value) {
            return preg_match('/[^a-z]/i', $value) ? false : true;
        }
?>

处理器.php

<?php
    include('class.formSanitise.php');
    $fv = new formSanitise();

    $sanitised= $fv->noNumbers($_POST['name']);

    if ($fv->isEmpty($sanitised)) {
        $fv->addError('Name', 'Please enter something');
    }
    if (!$fv->isAlpha($sanitised)) {
        $fv->addError('Name', 'Please enter your name');
    }
?>
4

2 回答 2

1

您要么需要创建一个return innoNumbers要么通过$value reference传递。

退货方式:

public function noNumbers($value) {
            return preg_replace('/[0-9]/', '', $value);
        }

参考

public function noNumbers(&$value) {
            $value = preg_replace('/[0-9]/', '', $value);
        }

returning一个值意味着它$value是一个完全不同的变量,$sanitized当它从函数返回时将被分配给它。通过引用传递意味着它$value与您传递给的变量完全相同noNumbers,因此,函数内部变量发生的任何事情都会发生在已传入的变量上。

于 2012-08-19T14:13:51.960 回答
0

在上面的代码片段中,函数 noNumbers 不返回任何值。传递给函数的参数仅在该函数内具有范围,为了使该值可用于调用函数,函数内必须有一个 return 语句,它将返回调用函数的值。或者,您可以通过引用将值传递给函数。

于 2012-08-19T14:21:40.003 回答