2016-02-07 3 views
0

Я прочитал довольно много сообщений здесь и на других сайтах, чтобы создать полупродукт работу ругательство фильтра с preg_replace, как показано ниже:preg_replace слова за исключением

function swearwords($word){ 
    $word = preg_replace('/\bwwww.badword.com\b/', '', $word); //do not remove \b //to add more copy and put word down 
    $word = preg_replace('/\bwww.badword.com\b/', '', $word); //do not remove \b //to add more copy and put word down 
    $word = preg_replace('/\bbadword\b/', '', $word); //do not remove \b //to add more copy and put word down 
    //$word = preg_replace('/\bimg.badword``\b/', '', $word); //do not remove \b //to add more copy and put word down 
    return $word; 
} 

Это работает, но я хочу, чтобы экземпляры img.badword

Так где «badword» имеет .img до него, я хочу, чтобы допустить, что использование

+0

' '/ \ Ь [^ я] [^ т] [^ г] [^ .] badword \ b/'' – arkascha

ответ

1

Вот решение с «отрицательного 'назад» утверждение:

... 
$word = preg_replace('/\b(?<!img\.)badword\b/', '', $word); 
... 

Вы также можете попробовать следующее все-в-одном замену:

function swearwords($word){ 
    $word = preg_replace('/\b(w{3,4}\.)*(?<!img\.)badword(\.com)*\b/', '', $word); 
    return $word; 
} 

http://php.net/manual/en/regexp.reference.assertions.php

+0

Решение« все-в-одном »блестящее. Спасибо – BravoZuluInc

+0

@BravoZuluInc, добро пожаловать! – RomanPerekhrest

+0

Еще один поворот, мне нужно разрешить как img.badword, так и imgmgr.badword – BravoZuluInc

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