2013-05-19 2 views
0

Я создаю фильтр ненормативной лексики/расового фильтра для моего сайта. У меня он работает, но моя строка preg_match довольно длинная. Мне просто интересно, есть ли способ разместить эту длинную строку в отдельном файле в CodeIgniter, а затем вызвать ее, когда мне нужно в preg_match.Вызов строки в отдельном файле в CodeIgniter

У меня есть googled это, и я ничего не мог найти, поэтому я думал, что попрошу здесь.

Что я делаю сейчас хозяйничает мой строку в модели, а затем называют это:

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

ответ

3

Вот несколько вариантов. В зависимости от того, как и где вы используете эту строку и функцию, можно быть лучше других.

Config

Вы можете хранить значение как 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

Наконец, вы можете использовать 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

Большое вам спасибо! Я закончил тем, что определял его как константу, так как я называю это где-то еще, и это сработало, как шарм! – zazvorniki

+0

Не беспокойтесь, я рад, что мой ответ помог! – jleft

-2

Вы можете использовать его с конфигурационным файлом (system/application/config/config.php), чтобы установить связанные с конфигурацией переменные.

============ ОПРЕДЕЛЕНИЕ ЧТО ВЫ ХОТИТЕ в config.php ================ ===========

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

Но лучшее место, чтобы установить константу

(система/приложение/Config/constants.php) для хранения сайтов предпочтения констант.

=================== ОПРЕДЕЛЕНИЕ ЧТО ВЫ ХОТИТЕ В константах.php ==================================

define('CONSTANT_STRING','YOUR_REQUIRED_LONG_STRING_OR_WHAT_YOU_WANT_STORE'); 
+0

Не могли бы вы объяснить, что здесь происходит? На этот вопрос уже был дан ответ, поэтому я смущен тем, что вы хотели сделать с конфигурацией. Главный вопрос здесь заключался в хранении длинной строки, а не пути к странице. – zazvorniki

+0

Я просто хочу, чтобы это было понятно, что для константных данных есть два пути в кодеигнитре: первый - файл system/application/config/config.php, но лучшим способом является место system/application/config/constants.php. Здесь мы может установить константу напрямую –

+0

Ваш ответ выше, все еще не очень ясен, потому что все это в блоке кода. Я думал, что вы просто даете большой блок кода. Вышеупомянутый ответ на самом деле описывает три разных способа объявления константы. – zazvorniki