在CodeIgniter中的单独文件中调用字符串

时间:2013-05-19 17:19:21

标签: codeigniter preg-match

我正在为我的网站建立一个亵渎/种族诽谤过滤器。我有它工作,但我的preg_match字符串很长。我只是想知道是否有一些方法可以在CodeIgniter中的单独文件中托管这个长字符串,然后在需要preg_match时调用它。

我用Google搜索了一下,我找不到任何东西,所以我想我会在这里问。

我现在正在做的是在模型中托管我的字符串然后调用它:

if(preg_match($filterRegex)){
  databaseStuffHere();
}

2 个答案:

答案 0 :(得分:3)

以下是一些选项。根据您使用此字符串和函数的方式和位置,可能会优于其他字符串。

<强>配置

您可以将值存储为application/config/config.php

中的config
$config['filter_regex'] = 'yourReallyLongString';

主要配置由CodeIgniter自动加载,因此您可以像这样使用它:

$filterRegex = $this->config->item('filter_regex');
if(preg_match($filterRegex, $subject))
{
    databaseStuffHere();
}

<强>恒

如果您在多个地方使用这个长字符串,并且拥有全局访问权限会很有用,您可以在application/config/constants.php中将其定义为常量。它还可以防止您意外地重新定义该值。

define('FILTER_REGEX', 'yourReallyLongString');

然后将它与您的函数一起使用:

$filterRegex = FILTER_REGEX;
if(preg_match($filterRegex, $subject))
{
    databaseStuffHere();
}

<强>辅助

最后,您可以使用helper。您可以在需要时加载帮助程序,也可以自动加载它。您可以在application/helpers/中创建自己的帮助程序。它可能看起来像这样:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! function_exists('filter_slurs'))
{
    function filter_slurs($subject = '')
    {
        $filter_regex = 'yourReallyLongString';
        if (preg_match($filter_regex, $subject))
        {
            return FALSE;
        }
        else
        {
            return TRUE;
        }
    }   
}

具有处理此功能的功能可能会使您的代码更容易理解并且更有意义,例如,在您的控制器中,您可以像这样使用它:

$this->load->helper('slur_filter_helper');  //assumes the helper file is: slur_filter_helper.php

if(filter_slurs($subject))
{
    //do something
}
else
{
    //do something else
}

答案 1 :(得分:-2)

您可以将它与配置文件(system / application / config / config.php)一起使用来设置与配置相关的变量。

======================在config.php中定义你想要的东西================= ==========

$config['REQUIRED_SRTING'] = 'YOUR_REQUIRED_LONG_STRING_OR_WHAT_YOU_WANT_STORE';

但设定常数的最佳位置是

(system / application / config / constants.php)存储站点首选项常量。

===================定义你在constants.php ====================中想要的东西=====

define('CONSTANT_STRING','YOUR_REQUIRED_LONG_STRING_OR_WHAT_YOU_WANT_STORE');