0

私の Web サイト用に冒とく/人種的中傷フィルターを作成しています。私はそれを機能させていますが、私のpreg_match文字列はかなり長いです。この長い文字列を CodeIgniter の別のファイルでホストし、preg_match.

ググっても何も見つからなかったのでこちらで質問させていただきます。

私が今行っているのは、モデルで文字列をホストしてから、これを呼び出すことです:

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

2 に答える 2

3

ここにいくつかのオプションがあります。この文字列と関数をどこでどのように使用しているかによって、どちらかが他のものよりも優れている場合があります。

設定

値を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
}
于 2013-05-19T18:42:51.783 に答える
-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');
于 2014-01-07T10:31:20.747 に答える