2016-01-21 4 views
1

я хочу, чтобы заблокировать или удалить все нежелательные символы с моего сайтаpreg_replace удалить все нежелательные символы

символы, такие как ᾄҭᾄ или нєℓℓσ ПРИВЕТ и т.д ..

мой код теперь

class badWordsC 
{ 
    public function check($text) 
    { 
     $badwords = 'com|net|org|info|.name|.biz|.me|.tv|.tel|.mobi|.asia|.uk|.eu|.us|.in|.tk|.cc|.ws|.bz|.mn|.co|.tw|.vn|.es|.pw|.club|.ca|.cn|.email|.photography|.photos|.tips|.solutions|.center|.gallery|.kitchen|.land|.technology|.today|.academy|.computer|.shoes|.careers|.domains|.coffee|.link|.guru|.estate|.company|.bike|.clothing|.holdings|.plumbing|.singles|.ventures|.camera|.equipment|.graphics|.lighting|.construction|.contractors|.directory|.diamonds|.enterprises|.voyage|.recipes|.gift|.site|.ly|.gq|.cf|.ga|.ml|.tk|in|rb2'; 
     $badwords .= 'type|ingoogle'; 
     $badwords = explode('|', $badwords); 

     $goodwords = 'youtube.com|prntscr.com|az545221.vo.msecnd.net'; 
     $goodwords .= 'wink|crying|fingerscrossed|blushing|wondering|inlove|evilgrin|yawning|puking|in'; 
     $goodwords = explode('|', $goodwords); 


     $text  = str_replace($goodwords, '', $text); 
     $text  = trim(preg_replace('/\s\s+/', '', $text)); 
     $text  = preg_replace('/\P{L}+/u', '', $text); 




     foreach ($badwords as $word) 
     { 
      if (strpos($text, $word) !== false || strpos($text, strtoupper($word)) !== false) 
      { 
       return false; 
      } 
     } 

     $text = preg_replace("/[a-zA-Z0-9]/", '', $text); 
     $text = preg_replace(array('/)/','/(/','/;/','/-/','/+/','/لأ/','/لإ/','/لا/','/إ/','/أ/', '/ا/', '/ض/', '/ص/', '/ث/', '/ق/', '/ف/', '/غ/', '/ع/', '/ه/', '/خ/', '/ح/', '/ج/', '/د/', '/ش/', '/س/', '/ي/', '/ب/', '/ل/', '/ت/', '/ن/', '/م/', '/ك/', '/ط/', '/ئ/', '/ء/', '/ؤ/', '/ر/', '/ى/', '/ة/', '/و/', '/ز/', '/ظ/', '/ذ/', '/ـ/'), '', $text); 



     if($text != '') 
     { 
      return false; 
     } 

     return true; 
    } 
} 

его рабочие, но не блокирующие или удаляющие символы, такие как н Ĕ

любая идея?

+0

Вы можете попробовать что-то [подобное] (https://regex101.com/r/eX8zG0/1): '/ (?: (?! [A-zäöüß]) \ p {L}) +/iu ' –

+0

@bobble bubble/(?: (?! [A-zäöüß]) \ p {L}) +/iu не работает –

+0

@ chris85 моя проблема в $ text = preg_replace ("/[a-zA-Z0-9 ]/", '', $ text); –

ответ

1

Модификатор u, который вам нужно использовать, вам также необходимо расширить свой класс символов, чтобы включить символы, отличные от ascii.

Я хотел бы использовать:

/[[:alnum:]]/u 

Regex Demo: https://regex101.com/r/iS1yZ2/2

Это кронштейн POSIX, вы можете увидеть больше тех, кто здесь, www.regular-expressions.info/posixbrackets.html.

Также в вашем втором выражении + нужно экранировать (или положить в классе символов, есть некоторые символы, кладя в характере не исправит -, ], ^), потому что это квантор. Существует функция PHP, которая выйдет из специальных символов, preg_quote.

Смежные вопросы