繁体   English   中英

从cakephp中的输入中删除多余的空格

[英]Remove extra white space from input in cakephp

我有一个html表单来保存cakephp中的项目。 我想限制用户保存相同的项目名称。 如果任何正文类型的相同项目名称在模型中应用了“唯一”验证,但是如果有人在项目名称之前或之后输入相同的名称,则它接受它并存储到数据库中。问题就是问题。 我想在保存之前删除多余的空格。

请帮忙。

从用户输入中删除空格的最佳位置即trim()位于Controller级别的beforeFilter()回调中。 对于PHP5 +,数组函数array_walk_recursive()使这项工作变得非常简单。

例如:

public function beforeFilter()
{
    parent::beforeFilter();

    // remove leading and trailing whitespace from posted data
    if (!function_exists('trimItem')) {
        function trimItem(&$item,$key){
            if (is_string($item)){
                $item = trim($item);    
            }
        }
    }       
    array_walk_recursive($this->request->data, 'trimItem');                     
}

将此代码放入AppController ,将在所有表单上修剪用户输入

希望这可以帮助

使用trim ,从两侧修剪你的弦

参考: http//php.net/manual/en/function.trim.php

trim($str);

正如@Prasantn Bebdra的答案的补充,因为提问者不知道在哪里以及如何使用trim()

要修剪控制器中POST的所有数据(在调用Model->save() ),请执行以下操作:

foreach ($this->data as $key => $value) {
    $this->data[$key] = trim($value);
}

你也可以在Model使用它的一个回调 ,例如beforeValidate()beforeSave() ,在你的情况下,最好使用beforeValidate,因为你可能还想在之后验证这些数据。

您还应该通知用户输入将被修剪,也可能在客户端进行此类修剪(在POST之前) - 检查此StackOverflow应答

通过我的研究,我认为最好的解决方案,如果您的数据是数组格式然后尝试这个=> Stackoverflow:如何修剪PHP中的数组值的空白

然而,如果您的数据不是数组,那么您可以简单地使用:

$data = trim($data);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM