2008-08-23 16 views
44

बहुत तकनीकी नहीं है, लेकिन ... मुझे एक नई साइट में खराब शब्द फ़िल्टर लागू करना है जिसे हम विकसित कर रहे हैं। तो मुझे अपने डीबी को खिलाने के लिए "अच्छा" बुरी शब्द सूची चाहिए ... कोई संकेत/दिशा? Google I found this एक के साथ चारों ओर देख रहे हैं, और यह एक शुरुआत है, लेकिन कुछ भी नहीं।"खराब शब्द" फ़िल्टर

हाँ, मुझे पता है कि इस प्रकार के फ़िल्टर आसानी से बच गए हैं ... लेकिन ग्राहक ग्राहक होगा !!! :-)

साइट को अंग्रेजी और इतालवी दोनों शब्दों को फ़िल्टर करना होगा, लेकिन इतालवी के लिए मैं अपने सहयोगियों से "parolacce" की समुदाय-निर्मित सूची के साथ मेरी सहायता करने के लिए कह सकता हूं :-) - एक ईमेल करेगा।

किसी भी मदद के लिए धन्यवाद।

+20

अवलोकन फ़िल्टरिंग ... एक बुरा विचार या वास्तव में एक बुरा विचार है? – stephenbayer

+1

इसे स्पेलचेकर के साथ टीम करें, अगर आपको पोस्ट-सेंसरशिप के बाद और अधिक वर्तनी त्रुटियां मिलती हैं, तो आप कहीं गड़बड़ कर चुके हैं और इससे संबंधित हो सकते हैं – nailitdown

+0

संबंधित: http://programmers.stackexchange.com/questions/143405/how-to- जनरेट-भाषा-सुरक्षित-यूयूड्स –

उत्तर

32

मुझे कोई भी भाषा निर्दिष्ट नहीं मिली है, लेकिन आप इसे PHP के लिए उपयोग कर सकते हैं, यह प्रत्येक instered काम के लिए एक RegEx उत्पन्न करेगा ताकि जानबूझकर गलत वर्तनी (यानी @ss, i3itch) भी पकड़ा जाएगा।

<?php 

/** 
* @author [email protected] 
**/ 

if($_GET['act'] == 'do') 
{ 
    $pattern['a'] = '/[a]/'; $replace['a'] = '[a A @]'; 
    $pattern['b'] = '/[b]/'; $replace['b'] = '[b B I3 l3 i3]'; 
    $pattern['c'] = '/[c]/'; $replace['c'] = '(?:[c C (]|[k K])'; 
    $pattern['d'] = '/[d]/'; $replace['d'] = '[d D]'; 
    $pattern['e'] = '/[e]/'; $replace['e'] = '[e E 3]'; 
    $pattern['f'] = '/[f]/'; $replace['f'] = '(?:[f F]|[ph pH Ph PH])'; 
    $pattern['g'] = '/[g]/'; $replace['g'] = '[g G 6]'; 
    $pattern['h'] = '/[h]/'; $replace['h'] = '[h H]'; 
    $pattern['i'] = '/[i]/'; $replace['i'] = '[i I l ! 1]'; 
    $pattern['j'] = '/[j]/'; $replace['j'] = '[j J]'; 
    $pattern['k'] = '/[k]/'; $replace['k'] = '(?:[c C (]|[k K])'; 
    $pattern['l'] = '/[l]/'; $replace['l'] = '[l L 1 ! i]'; 
    $pattern['m'] = '/[m]/'; $replace['m'] = '[m M]'; 
    $pattern['n'] = '/[n]/'; $replace['n'] = '[n N]'; 
    $pattern['o'] = '/[o]/'; $replace['o'] = '[o O 0]'; 
    $pattern['p'] = '/[p]/'; $replace['p'] = '[p P]'; 
    $pattern['q'] = '/[q]/'; $replace['q'] = '[q Q 9]'; 
    $pattern['r'] = '/[r]/'; $replace['r'] = '[r R]'; 
    $pattern['s'] = '/[s]/'; $replace['s'] = '[s S $ 5]'; 
    $pattern['t'] = '/[t]/'; $replace['t'] = '[t T 7]'; 
    $pattern['u'] = '/[u]/'; $replace['u'] = '[u U v V]'; 
    $pattern['v'] = '/[v]/'; $replace['v'] = '[v V u U]'; 
    $pattern['w'] = '/[w]/'; $replace['w'] = '[w W vv VV]'; 
    $pattern['x'] = '/[x]/'; $replace['x'] = '[x X]'; 
    $pattern['y'] = '/[y]/'; $replace['y'] = '[y Y]'; 
    $pattern['z'] = '/[z]/'; $replace['z'] = '[z Z 2]'; 
    $word = str_split(strtolower($_POST['word'])); 
    $i=0; 
    while($i < count($word)) 
    { 
     if(!is_numeric($word[$i])) 
     { 
      if($word[$i] != ' ' || count($word[$i]) < '1') 
      { 
       $word[$i] = preg_replace($pattern[$word[$i]], $replace[$word[$i]], $word[$i]); 
      } 
     } 
     $i++; 
    } 
    //$word = "/" . implode('', $word) . "/"; 
    echo implode('', $word); 
} 

if($_GET['act'] == 'list') 
{ 
    $link = mysql_connect('localhost', 'username', 'password', '1'); 
    mysql_select_db('peoples'); 
    $sql = "SELECT word FROM filters"; 
    $result = mysql_query($sql, $link); 
    $i=0; 
    while($i < mysql_num_rows($result)) 
    { 
     echo mysql_result($result, $i, 'word') . "<br />"; 
     $i++; 
    } 
    echo '<hr>'; 
} 
?> 
<html> 
    <head> 
     <title>RegEx Generator</title> 
    </head> 
    <body> 
     <form action='badword.php?act=do' method='post'> 
      Word: <input type='text' name='word' /><br /> 
      <input type='submit' value='Generate' /> 
     </form> 
     <a href="badword.php?act=list">List Words</a> 
    </body> 
</html> 
+15

दिन-दर-दिन ig-pay atin-lay। Urse-cay ords-way are-ar ill-st ite-quay eadable-r है। (एओएल निक इशहे के पूर्व मालिक)। – plinth

+8

आपका मतलब है "ऑन-डेट ऑर्गेट-फे" – Raiyan

47

clbuttic mistakes से सावधान रहें।

+5

मैंने इस धागे को एक ही प्रतिक्रिया जोड़ने के इरादे से खोला ... और फिर मुझे एहसास हुआ कि मैंने आपको इसके लिए एक उपर दिया है बहुत पहले :) –

1

तुम हमेशा ग्राहक को समझाने उपयोगकर्ताओं सिर्फ लगातार अपशब्द पोस्टिंग की एक सत्र है और उन्हें प्रणाली में जोड़ने के लिए एक आसान समाधान बनाने के लिए कर सकता है। यह बहुत काम है लेकिन यह शायद समुदाय का अधिक प्रतिनिधि होगा।

4

मैं केवल उन पदों को हटाने के लिए कहूंगा क्योंकि आप उनके बारे में जानते हैं, और उन उपयोगकर्ताओं को अवरुद्ध करते हैं जो उनके पोस्टिंग के साथ अत्यधिक स्पष्ट हैं। आप किसी भी कसम शब्द का उपयोग किये बिना बहुत आक्रामक बातें कह सकते हैं। यदि आप शब्द गधे (उर्फ गधे) को अवरुद्ध करते हैं, तो लोग केवल $$ या/55 टाइप करेंगे, या फ़िल्टर को पिछले प्राप्त करने के लिए उन्हें जो कुछ भी टाइप करना होगा।

3

क्लब्ट्टिक गलती पर +1, मुझे लगता है कि "खराब शब्द" फ़िल्टरों के लिए महत्वपूर्ण और पीछे की जगहों (उदाहरण के लिए, "गधे") दोनों के लिए स्कैन करने के लिए यह महत्वपूर्ण है कि केवल सटीक स्ट्रिंग के विपरीत है ताकि हम नहीं करेंगे clbuttic, clbuttes, मक्खन, buttess, आदि जैसे शब्द हैं

+4

और स्कन्थोरपे शहर को अवरुद्ध न करें। – TRiG

+0

दुर्भाग्यवश, यह अनुच्छेद या विराम चिह्न के आरंभ में श्राप से छुटकारा नहीं पाता है। अगर मेरे पास एक पैराग्राफ था जिसमें "(Badword)!" शामिल था, तो यह आपके परीक्षण में विफल हो जाएगा। – proudgeekdad

-1

मुझे हाल ही में यह मुफ्त बुरा शब्द ऑनलाइन वेबसाइट सेवा फ़िल्टरिंग मिला। वे जेएसओएन में डब्ल्यूसीएफ और फॉर्म पोस्ट की अनुमति देते हैं। यह वास्तव में अच्छा काम करता है और मुझे सूची को अद्यतन करने की आवश्यकता नहीं है क्योंकि उनकी सूची लगातार अद्यतन होती है। उनके पास मुफ्त और किफायती प्रीमियम सेवाएं उपलब्ध हैं।

इसके लायक है।

http://www.thefilthylist.com

-3

इस विषय पर शोध में मैं निर्धारित किया है कि क्या जरूरत थी सिर्फ एक सूची है कि मनमाने ढंग से प्रतिस्थापन की तुलना में अधिक था। मैंने एक वेब सेवा बनाई है जो आपको अपनी इच्छित 'स्वच्छता' के स्तर की पहचान करने की अनुमति देती है। यह झूठी सकारात्मक पहचानने का प्रयास भी करता है - यानी जहां एक शब्द एक संदर्भ में बुरा हो सकता है लेकिन दूसरों में नहीं। http://filterlanguage.com

+1

यूआरएल पहुंच योग्य नहीं था। – Lenin

31

Shutterstock एक list of bad words छानने के लिए इस्तेमाल किया के साथ एक Github रेपो है।

आप इसे यहां देख सकते हैं: https://github.com/shutterstock/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words

+1

यह अजीब तरह से आसान था: पी – Maffelu

+2

हालांकि यह थोड़ा सा है - "श्री हैंड्स" जाहिर तौर पर आक्रामक है। – UpTheCreek

+1

फ्रेंच डीबी खराब है ... – Cocorico

6

किसी को भी एक API की जरूरत है, गूगल वर्तमान में एक बुरा शब्द सूचक प्रदान करते हैं।

http://www.wdyl.com/profanity?q=naughtyword 

{ 
response: "false" 
} 

अद्यतन: Google ने अब इस सेवा को हटा दिया है।

+5

अब सक्रिय नहीं प्रतीत होता है। – Nick