我正在为我的网站构建一个亵渎/种族诽谤过滤器。我有它的工作,但我的preg_match
字符串很长。我只是想知道是否有某种方法可以将这个长字符串托管在 CodeIgniter 中的单独文件中,然后在需要时在preg_match
.
我用谷歌搜索了这个,我找不到任何东西,所以我想我会在这里问。
我现在正在做的是将我的字符串托管在模型中,然后调用它:
if(preg_match($filterRegex)){
databaseStuffHere();
}
我正在为我的网站构建一个亵渎/种族诽谤过滤器。我有它的工作,但我的preg_match
字符串很长。我只是想知道是否有某种方法可以将这个长字符串托管在 CodeIgniter 中的单独文件中,然后在需要时在preg_match
.
我用谷歌搜索了这个,我找不到任何东西,所以我想我会在这里问。
我现在正在做的是将我的字符串托管在模型中,然后调用它:
if(preg_match($filterRegex)){
databaseStuffHere();
}
这里有几个选项。根据您使用此字符串和函数的方式和位置,其中一个可能比其他更好。
配置
您可以将值存储为config,在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
}
您可以将它与配置文件(system/application/config/config.php)一起使用来设置配置相关的变量。
====================== 在 config.php 中定义你想要的内容 ==================== =======
$config['REQUIRED_SRTING'] = 'YOUR_REQUIRED_LONG_STRING_OR_WHAT_YOU_WANT_STORE';
但是设置常量的最佳位置是
(system/application/config/constants.php) to store site preference constants.
===================DEFINE WHAT YOU WANT in constants.php=========================
define('CONSTANT_STRING','YOUR_REQUIRED_LONG_STRING_OR_WHAT_YOU_WANT_STORE');