_Juri_
Новичок
регулярное выражение, ограничители!
Привет!
Народ, помогите, плз, чайнику!
И простите если где-то уже обсуждалась!
Ситуация – есть перечень слов которые я хочу экранировать! (строю систему защиты!)
Скрипт:
Выдает :
START [=]IN[-]SERT [=]PHP[-] [=]JS[-][=]SCRIPT[-] [=]JS[-]_[=]SCRIPT[-] JAVA[=]SCRIPT[-] [=]JS[-] VB[=]SCRIPT[-] [=]SCRIPT[-] [=]PERL[-] [=]CHAR[-] [=]LOAD_FILE[-] [=]IN[-]CLUDE [=]IN[-]CLUDE_ONCE [=]REQUIRE[-] [=]REQUIRE[-]_ONCE TEST
А хотся :
START [=]INSERT[-] [=]PHP[-] [=]JSSCRIPT[-] [=]JS_SCRIPT[-] [=]JAVASCRIPT[-] [=]JS[-] [=]VBSCRIPT[-]
[=]SCRIPT[-] [=]PERL[-] [=]CHAR[-] [=]LOAD_FILE[-] [=]INCLUDE[-] [=]INCLUDE_ONCE[-] [=]REQUIRE[-] [=]REQUIRE_ONCE[-] TEST
Естественно код обрезан (шестнядцатиричные вариации и т.д.)
Помогите пожалуйста! Дока не спасает! Проблемы и с «^» и «$»! Научите чайника!
Т.е. :"/(S|s)(C|c)(R|r)(I|i)(P|p)(T|t)/" ломает: JSSCRIPT JS_SCRIPT JAVASCRIPT VBSCRIPT SCRIPT
а надо только: SCRIPT!!!
Подскажите, плз!!!
Спасибо!!!
Привет!
Народ, помогите, плз, чайнику!
И простите если где-то уже обсуждалась!
Ситуация – есть перечень слов которые я хочу экранировать! (строю систему защиты!)
Скрипт:
PHP:
<?php
$in="START INSERT PHP JSSCRIPT JS_SCRIPT JAVASCRIPT JS VBSCRIPT SCRIPT PERL CHAR LOAD_FILE
INCLUDE INCLUDE_ONCE REQUIRE REQUIRE_ONCE TEST";
$arr_bad_word=array('IN', 'SELECT', 'AND', 'OR', 'UNION',
'INSERT', 'UPDATE', 'DELETE', 'DROP', 'WHERE', 'LIKE',
'SCRIPT', 'PHP', 'JAVASCRIPT', 'JS' , 'VBSCRIPT','PERL',
'CHAR', 'LOAD_FILE', 'INCLUDE', 'INCLUDE_ONCE', 'REQUIRE', 'REQUIRE_ONCE');
$arr_good_word=array('[=]IN[-]', '[=]SELECT[-]', '[=]AND[-]', '[=]OR[-]', '[=]UNION[-]',
'[=]INSERT[-]', '[=]UPDATE[-]', '[=]DELETE[-]', '[=]DROP[-]',
'[=]WHERE[-]', '[=]LIKE[-]', '[=]SCRIPT[-]', '[=]PHP[-]',
'[=]JAVASCRIPT[-]', '[=]JS[-]' , '[=]VBSCRIPT[-]', '[=]PERL[-]',
'[=]CHAR[-]', '[=]LOAD_FILE[-]', '[=]INCLUDE[-]',
'[=]INCLUDE_ONCE[-]', '[=]REQUIRE[-]', '[=]REQUIRE_ONCE[-]');
for($t=0;$t<count($arr_bad_word);$t++)
{ // Перебираем массив слов
$m='/';
for($i=0;$i<strlen($arr_bad_word[$t]);$i++)
{ // Перебираем слово
$m.='(';
$m.=strtoupper($arr_bad_word[$t][$i]).'|'.strtolower($arr_bad_word[$t][$i]).')';
}
$m.='/';
$in=preg_replace($m, $arr_good_word[$t], $in);
}
echo $in;
?>
START [=]IN[-]SERT [=]PHP[-] [=]JS[-][=]SCRIPT[-] [=]JS[-]_[=]SCRIPT[-] JAVA[=]SCRIPT[-] [=]JS[-] VB[=]SCRIPT[-] [=]SCRIPT[-] [=]PERL[-] [=]CHAR[-] [=]LOAD_FILE[-] [=]IN[-]CLUDE [=]IN[-]CLUDE_ONCE [=]REQUIRE[-] [=]REQUIRE[-]_ONCE TEST
А хотся :
START [=]INSERT[-] [=]PHP[-] [=]JSSCRIPT[-] [=]JS_SCRIPT[-] [=]JAVASCRIPT[-] [=]JS[-] [=]VBSCRIPT[-]
[=]SCRIPT[-] [=]PERL[-] [=]CHAR[-] [=]LOAD_FILE[-] [=]INCLUDE[-] [=]INCLUDE_ONCE[-] [=]REQUIRE[-] [=]REQUIRE_ONCE[-] TEST
Естественно код обрезан (шестнядцатиричные вариации и т.д.)
Помогите пожалуйста! Дока не спасает! Проблемы и с «^» и «$»! Научите чайника!
Т.е. :"/(S|s)(C|c)(R|r)(I|i)(P|p)(T|t)/" ломает: JSSCRIPT JS_SCRIPT JAVASCRIPT VBSCRIPT SCRIPT
а надо только: SCRIPT!!!
Подскажите, плз!!!
Спасибо!!!