无法获取静态函数来工作php

时间:2014-01-15 15:12:02

标签: php

所以我不想创建这个功能:

public static function formclean($string) {
    htmlentities(strip_tags(trim($string)));
    return $string;
}

为MySQL数据库条目准备字符串的位置。但是,当我调用我的函数时:

$class->string = Class::formclean($_POST['string']);

它不会返回准备好的字符串。当我编写下一段代码时,它确实有效。

$class->string = htmlentities(strip_tags(trim($_POST['string'])));

我做错了什么?

2 个答案:

答案 0 :(得分:3)

您忘记将htmlentities()的返回值捕获到变量中:

public static function formclean($string) {
    $string = htmlentities(strip_tags(trim($string)));
    return $string;
}

或者,简而言之,只需直接返回该输出:

public static function formclean($string) {
    return htmlentities(strip_tags(trim($string)));
}

答案 1 :(得分:1)

  1. 您的问题与static关键字无关。

  2. 您认为$stringhtmlentities()修改,但此类函数不会通过引用接收参数:它无法修改原始值。

      

    取值tring htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )

    通过参考接收args的函数将包含& 符号,例如sort()

      

    bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

  3. strip_tags()与数据库或验证无关。这只是一种破坏用户数据的方法。 proper way to prevent SQL injection是使用您的数据库库功能来注入参数(即预准备语句)。