Подскажите с фильтром

1. Дмитрий (24.06.2010 / 10:25)
какой функцией отфильтровать сразу много переменных ?

2. Azzido (24.06.2010 / 10:26)
array_filter();

3. Дмитрий (24.06.2010 / 10:28)
мм а с примером?smile

4. Azzido (24.06.2010 / 10:30)
http://php.su/functions/?f=array_filter&choice=info

5. Дмитрий (24.06.2010 / 10:30)
ты наверно не понял меня )

вот допустим регулярка

if (preg_match('![^ a-zA-Zа-яА-ЯёЁ0-9@\*\?\\/\(\)\[\]\!\.\"\'\%\-,~_=:;]+!u',$msg)) {
echo 'Ошибка!запрещенные символы.';
exit;
}

как несколько сразу отфильтровать

6. Azzido (24.06.2010 / 10:31)
ээээээээ не то вот это читай http://php.su/functions/?array-map функция array_map тебе нужна

7. Дмитрий (24.06.2010 / 10:33)
мда ниче не понятно

8. Azzido (24.06.2010 / 10:33)
$array=array_map('htmlspecialchars',$array);

9. Дмитрий (24.06.2010 / 10:37)
htmlspecialchars - хрень, надо фильтровать спец символы

10. Дмитрий (24.06.2010 / 10:39)
отак шоль

$a = array($b, $c, $d, $e, $z);
$x = array_map("", $a);

11. Azzido (24.06.2010 / 10:39)
function check($text){
return mysql_real_escape_string(htmlspecialchars($text));
}
$array=array_map('check',$array);

12. Дмитрий (24.06.2010 / 10:42)
хорошо, вопрос 1 - как записать НЕСКОЛЬКО переменных ?smile через запятую сюда же? вопрос 2 - фильтровать от таких символов µ¥¤¢ будет?

13. Azzido (24.06.2010 / 10:54)
$array[]=$var1;
$array[]=$var2;
$array[]=$var3;
function check($text){
return preg_replace('![^a-zA-Zа-яА-ЯёЁ0-9@\*\?\(\)\[\]\!\.\-,~_=:;]+!u','',$text);
}
$array=array_map('check',$array);

14. Azzido (24.06.2010 / 10:57)
такс, короче забудь все что я выше писал и читай вот эти две статьи
http://www.bombimbom.com/manual/function.filter-var-array.html
http://visavi.net/blog/blog.php?act=view&id=65&

15. Дмитрий (24.06.2010 / 11:56)
Не совсем понял.... sad

тоесть мне вот типа так юзать надо?

$var1 = '<>/?\|';
$var2 = '<>/?\|';
$var3 = '<>/?\|';

$array[]=$var1;
$array[]=$var2;
$array[]=$var3;
function check($text){
return preg_replace('![^a-zA-Zа-яА-ЯёЁ0-9@\*\?\(\)\[\]\!\.\-,~_=:;]+!u','',$text);
}
$array=array_map('check',$array);

if ($text !== false) {
echo 'OK';
} else {
echo 'ERROR';
}


16. Azzido (24.06.2010 / 12:04)
я тебе уйму мана дал, переваривай

17. Дмитрий (25.06.2010 / 03:55)
Делаю так, записываю функцию в конфиг который везде инклудится

function msg_Filtr ( $data ) 
{ 
if ( preg_match( '![^ a-zA-Zа-яА-ЯёЁ0-9@\*\?\(\)\[\]\!\.\"\'\%\-,~_=:;]+!u',$data ) ) 
return TRUE; 
else 
return $data; 
} 

далее в обработчике пишу

if ( msg_Filtr( $msg )) {
echo 'В сообщении найдены запрещенные символы'; 
exit;
}


не работает, и что неправильно?

18. Артур (25.06.2010 / 06:23)
Что значит "не работает"?
if(msg_Filtr($msg) === TRUE)...

19. Дмитрий (25.06.2010 / 06:51)
Вот так работает

if (msg_Filtr($name) === TRUE) {
echo 'В сообщении найдены запрещенные символы';
exit;
}

а если вот так

if ((msg_Filtr($name) === TRUE) or (msg_Filtr($infa) === TRUE)) {
echo 'В сообщении найдены запрещенные символы';
exit;
}

не работает, т.е. напостой выбивает что запрещенные символы sad

20. Дмитрий (25.06.2010 / 06:54)
Во, вот теперь работает )

21. Мансур (25.06.2010 / 07:48)
Функция экранирования основных знаков
function check($msg){ 

if (is_array($msg)) {

foreach($msg as $key=>$val) {
$msg[$key] = check($val);
}

} else {
$msg = htmlspecialchars($msg); 
$search = array('|','\'','$','\\','^','%','`',"\0");
$replace = array('|',''','$','\','^','%','`','');

$msg = str_replace($search, $replace, $msg);
$msg = stripslashes(trim($msg));
}

return $msg;
}
Функция удаления основных знаков
function check_full($message){ 
$message=str_replace("|","I",$message); 
$message=str_replace("||","I",$message);
$message=str_replace("&","",$message);
$message=str_replace("\"","",$message);
$message=str_replace(">","",$message);
$message=str_replace("<","",$message);
$message=htmlspecialchars($message);                  
$message=str_replace("'","",$message);            
$message=str_replace("\"","",$message);  
$message=str_replace("\$","",$message);    
$message=str_replace("$","",$message);          
$message=str_replace("\\","", $message);                            
$message=str_replace("`","", $message);    
$message=str_replace("%","", $message);
$message=stripslashes(trim($message));               
return $message;
}


22. Олег (25.06.2010 / 11:25)
Да уж, preg_replace же есть

23. Дмитрий (25.06.2010 / 11:53)
Все, всем спасибо получилось )

URL: https://visavi.net/topics/10838