我得到了简单的html表单,每个输入来自这个表单我想要filtr。首先,我无法将函数结果解析为字符串,然后我意识到原因是结果为NULL。似乎表单中的数据不会转移到类(?)。你能给我一个提示 - 为什么?
index.php上的表格
<form method="post" action="index.php">
<input type="textbox" name="nrInput" maxlength="5000">
<input type="Submit" name="myForm" value="Go">
</form>
<?php
ini_set('display_errors', '1');
error_reporting(E_ALL);
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['myForm']) {
$number = (empty($_POST['nrInput'])) ? die('Please enter a value.') : $_POST['nrInput'] ;
require ('class.forminput.php');
$number = new formInput(); //?
$number->trimInput($number);
echo $number;
}
?>
class.forminput.php
class formInput {
public $costam;
public function __construct()
{
return $this->costam;
}
public function trimInput($costam)
{
if(is_null($this->costam))
{
return 'Empty';
}
$costam = trim($this->$costam);
$costam = str_replace(';', ',', $this->$costam);
$costam = preg_replace('/[^A-Za-z0-9\-,]/', '', $this->$costam);
$costam = trim(preg_replace('/(,|-)\1+/','$1', $this->$costam), ',');
}
public function __toString()
{
if(is_null($this->costam))
{
return 'Empty';
}
return $this->costam;
}
}
结果是&#39;空&#39;
答案 0 :(得分:1)
首先,PHP构造函数不返回任何内容,因此永远不会发出构造函数中的return
。
第二,如果要分配给类属性,则应将参数传递给它。
public function __construct($input)
{
$this->costam = $input;
}
需要返回的是trimInput()
:
public function trimInput()
{
$costam = trim($this->costam);
$costam = str_replace(';', ',', $costam);
$costam = preg_replace('/[^A-Za-z0-9\-,]/', '', $costam);
$costam = trim(preg_replace('/(,|-)\1+/','$1', $costam), ',');
return $costam;
}
您可以像这样使用它:
$number = new formInput($_POST['nrInput']);
$result = $number->trimInput();
echo $result;
另请注意,您的输入永远不会是NULL