我正在为我的网站建立一个亵渎/种族诽谤过滤器。我有它工作,但我的preg_match
字符串很长。我只是想知道是否有一些方法可以在CodeIgniter中的单独文件中托管这个长字符串,然后在需要preg_match
时调用它。
我用Google搜索了一下,我找不到任何东西,所以我想我会在这里问。
我现在正在做的是在模型中托管我的字符串然后调用它:
if(preg_match($filterRegex)){
databaseStuffHere();
}
答案 0 :(得分:3)
以下是一些选项。根据您使用此字符串和函数的方式和位置,可能会优于其他字符串。
<强>配置强>
您可以将值存储为application/config/config.php
$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');