Php 对文本列进行某种筛选的最佳方式是什么

Php 对文本列进行某种筛选的最佳方式是什么,php,validation,yii,input-filtering,Php,Validation,Yii,Input Filtering,我希望在我的应用程序中的所有文本字段上都有某种过滤器,以了解某个字段是否有一些不好的内容,比如过滤掉用户的恶言恶语 我想了一些办法 我可以preg\u replace()overphp://inputstream,并替换坏内容 我可以编写一个自定义过滤器,并将其用于每个模型中的每个字段,这是一个LOT,我真的不想去那里 我可以知道如何覆盖yii的默认sting验证器(我还不知道怎么做) 我想以一种动态的方式来做,不想写太多的规则 针对我的情况(从上面或任何其他方面)最好的解决方案是什么 更新

我希望在我的应用程序中的所有文本字段上都有某种过滤器,以了解某个字段是否有一些不好的内容,比如过滤掉用户的恶言恶语

我想了一些办法

  • 我可以
    preg\u replace()
    over
    php://input
    stream,并替换坏内容
  • 我可以编写一个自定义过滤器,并将其用于每个模型中的每个字段,这是一个LOT,我真的不想去那里
  • 我可以知道如何覆盖yii的默认sting验证器(我还不知道怎么做)
我想以一种动态的方式来做,不想写太多的规则

针对我的情况(从上面或任何其他方面)最好的解决方案是什么


更新:我正在寻找一种方法来取代用户输入的咒骂和咒骂,并用其他东西取代它

希望这就是你所要求的

您想删除吗

  • 字段中的脚本
  • 字段中的标签
你可以和我一起去。它从用户数据中删除不需要的数据

你有两种方法

  • 对于控制器中的每个窗体
  • config/main.php
如果是在全球范围内完成的,并且当您使用一些
CKEditor
tinyeditor
时,您将无法发布所需的html。但是你也有办法得到它们

编辑:

您的任务是删除用户输入中不需要的单词

所以

这可以在控制器中进行一次(确保这可以正常工作)。


(未尝试)另一种方法是将其放在父控制器中,即
控制器
如果您的列位于模型之上,则可以使用以下内容:

public function rules()
{
    $purifier = getHtmlPurifier();
    return array(
        array('column', 'filter', 'filter' => array($obj = $purifier, 'purify')),
    );
}

如果您不喜欢使用htmlPurifier,您可以通过创建函数在任何其他类型上创建过滤器。

谢谢您的回答,但这对我的应用程序来说太多了。我只是在寻找一种方法来取代用户输入的诅咒和咒骂,并在我的所有模型中用其他类似的东西来取代它,我不想让用户输入单词:
Fu*k
,但我需要全局执行此操作。如果您可以在每个控制器中执行此操作,我建议您在父控制器中查看编辑
public function rules()
{
    $purifier = getHtmlPurifier();
    return array(
        array('column', 'filter', 'filter' => array($obj = $purifier, 'purify')),
    );
}