scheldwoorden filter
Ik ben bezig met het maken van een forum. Ik wil hier graag een scheldwoordenfilter in zetten maar het lukt me niet helemaal. Heeft iemand een goed filter?
Ik heb telkens geprobeert om het filter te include in de "post"pagina is dit ook wel handig??
graag hulp
Misschien heb je wel een keer iets als scheldwoord gerekend en is ie dat niet, dan staat ie censored in de db. Als je hem bij het eruithalen pas doet blijft ie gewoon in de database bestaan :)
preg_match of preg_match_all ;)
je kunt dit doen met Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$tekst = "de tekst met scheldwoorden, die voor sterretjes vervangen worden";
$woorden = array('woorden','die','niet','mogen');
foreach($woorden as $woord) {
$tekst = str_replace($woord,"***",$tekst);
}
?>
$tekst = "de tekst met scheldwoorden, die voor sterretjes vervangen worden";
$woorden = array('woorden','die','niet','mogen');
foreach($woorden as $woord) {
$tekst = str_replace($woord,"***",$tekst);
}
?>
Gewijzigd op 01/01/1970 01:00:00 door niek s
Kwou al zeggen, regex is vet, maar gebruik het alleen wanneer het nodig is, is namelijk is een stuk slomer dat een simpele string replace.
(->verbeterde code van niek!<-
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$tekst = "de tekst met scheldwoorden, die voor sterretjes vervangen worden";
$woorden = array('woorden','die','niet','mogen');
foreach($woorden as $woord) {
$tekst = str_replace($woord,"***",$tekst);
}
?>
$tekst = "de tekst met scheldwoorden, die voor sterretjes vervangen worden";
$woorden = array('woorden','die','niet','mogen');
foreach($woorden as $woord) {
$tekst = str_replace($woord,"***",$tekst);
}
?>
Dizzy schreef op 27.03.2007 20:32:
:) als je het scriptje van niek copiert zorg dat je de typfout niet mee copiert
(->verbeterde code van niek!<-
(->verbeterde code van niek!<-
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$tekst = "de tekst met scheldwoorden, die voor sterretjes vervangen worden";
$woorden = array('woorden','die','niet','mogen');
foreach($woorden as $woord) {
$tekst = str_replace($woord,"***",$tekst);
}
?>
$tekst = "de tekst met scheldwoorden, die voor sterretjes vervangen worden";
$woorden = array('woorden','die','niet','mogen');
foreach($woorden as $woord) {
$tekst = str_replace($woord,"***",$tekst);
}
?>
Goed gezien :) Heb het aangepast.
Baarr schreef op 27.03.2007 20:32:
En in dit geval kun je dus beter wel kiezen voor een regex, aangezien een str_replace niet voldoet. Kwou al zeggen, regex is vet, maar gebruik het alleen wanneer het nodig is, is namelijk is een stuk slomer dat een simpele string replace.
Een eenvoudige str_replace vervangt namelijk ook dat 'scheldwoord' als het een onderdeel van een langer woord is. Dus ook van een woord dat eventueel wel een toegestane betekenis heeft.
Als je echt complexe dingen gaat maken, dus ook checken of k-u-t gebruikt word of weet ik veel wat voor exotische zaken, dan is een regex wellicht beter.
Gewijzigd op 01/01/1970 01:00:00 door Baarr
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
error_reporting(E_ALL);
include 'functions.php';
beginPage();
verbind();
print '<h3 align="center">Bekijk de onderwerpen:</h2>';
if(isset($_GET['verplaats_topic']) && isset($_SESSION['administrator']))
{
verplaats_topic((int) $_GET['topic_id'], (int) $_GET['forum_id']);
}
if(isset($_GET['close_topic']) && isset($_SESSION['administrator']))
{
if(!$rMySQLQuery = mysql_query("UPDATE `topics` SET `topic_locked` = '1' WHERE `topic_id` = '".$_GET['topic_id']."' LIMIT 1;"))
{
message_die();
}
@header('Location: view_forum.php?style='.$_GET['style'].'&forum_id='.$_GET['forum_id']);
}
if(isset($_GET['open_topic']) && isset($_SESSION['administrator']))
{
if(!$rMySQLQuery = mysql_query("UPDATE `topics` SET `topic_locked` = '0' WHERE `topic_id` = '".$_GET['topic_id']."' LIMIT 1;"))
{
message_die();
}
@header('Location: view_forum.php?style='.$_GET['style'].'&forum_id='.$_GET['forum_id']);
}
function get_user_info($iUserId)
{
if(!$rMySQLQuery1 = mysql_query("SELECT * FROM members WHERE member_id = '".$iUserId."'"))
{
message_die();
}
if(mysql_num_rows($rMySQLQuery1) == 0)
{
trigger_error('Invalid user ID given: <b>'.$iUserId.'</b>',E_USER_ERROR);
}
return mysql_fetch_assoc($rMySQLQuery1);
}
if(!isset($_GET['topic_id']))
{
die('<p align="center">Het commando \'topic_id\' ontbreekt!</p>');
}
if(!is_numeric($_GET['topic_id']))
{
die('<p align="center">Het commando \'topic_id\' moet een nummer zijn!</p>');
}
if(!isset($_GET['forum_id']))
{
die('<p align="center">Het commando \'forum_id\' ontbreekt!</p>');
}
if(!is_numeric($_GET['forum_id']))
{
die('<p align="center">Het commando \'forum_id\' moet een nummer zijn!</p>');
}
if(!$rMySQLQuery1 = mysql_query("SELECT topic_id,forum_id,topic_locked FROM topics WHERE topic_id = '".$_GET['topic_id']."' AND forum_id = '".$_GET['forum_id']."'"))
{
message_die();
}
if(mysql_num_rows($rMySQLQuery1) == 0)
{
die('<p align="center">Het onderwerp dat je zoekt bestaat niet! <a href="index.php" class="link">Index</a></p>');
}
if(!$rMySQLQuery2 = mysql_query("SELECT forum_naam,forum_id FROM forums WHERE forum_id = '".$_GET['forum_id']."'"))
{
message_die();
}
$aFetch = mysql_fetch_assoc($rMySQLQuery2);
print '<p align="center"><a href="index.php?style='.$_GET['style'].'" class="link">Forum Index</a> >> <a class="link" href="view_forum.php?style='.$_GET['style'].'&forum_id='.$_GET['forum_id'].'">'.stripslashes($aFetch['forum_naam']).'</a></p>';
if(!$rMySQLQuery3 = mysql_query("SELECT * FROM replys WHERE topic_id = '".$_GET['topic_id']."'"))
{
message_die();
}
print '<p align="center"><u> </u></p>';
print '<center><table border="0">';
while($aFetch = mysql_fetch_assoc($rMySQLQuery3))
{
$a_Fetch = mysql_fetch_assoc(mysql_query("SELECT member_id,member_username FROM members WHERE member_username = '".$aFetch['reply_poster']."'"));
$aUserInfo = get_user_info($a_Fetch['member_id']);
$aFetch['reply_poster'] = htmlspecialchars(stripslashes($aFetch['reply_poster']));
if(!$rMySQLQuery4 = mysql_query("SELECT member_handtekening,member_username,member_id,member_posts FROM members WHERE member_username = '".$aFetch['reply_poster']."'"))
{
message_die();
}
$aFetch2 = mysql_fetch_assoc($rMySQLQuery4);
settype($aFetch2['member_posts'],'integer');
$aFetch['reply_message']= str_replace('<','<',$aFetch['reply_message']);
$aFetch['reply_message']= str_replace('>','>',$aFetch['reply_message']);
$aFetch['reply_message']= nl2br(stripslashes($aFetch['reply_message']));
$aFetch['member_rank'] = '<b>'.get_user_rank($aFetch2['member_posts'],$aFetch['reply_poster']).'</b>';
$aFetch['reply_message']= str_replace(
array(':-)',':-(',':D',':P',';)'),
array('<img src="Images/blij.gif">','<img src="Images/sad.gif">','<img src="Images/YAY.gif">','<img src="Images/lol.gif">','<img src="Images/knipoog.gif">'),
$aFetch['reply_message']);
?>
error_reporting(E_ALL);
include 'functions.php';
beginPage();
verbind();
print '<h3 align="center">Bekijk de onderwerpen:</h2>';
if(isset($_GET['verplaats_topic']) && isset($_SESSION['administrator']))
{
verplaats_topic((int) $_GET['topic_id'], (int) $_GET['forum_id']);
}
if(isset($_GET['close_topic']) && isset($_SESSION['administrator']))
{
if(!$rMySQLQuery = mysql_query("UPDATE `topics` SET `topic_locked` = '1' WHERE `topic_id` = '".$_GET['topic_id']."' LIMIT 1;"))
{
message_die();
}
@header('Location: view_forum.php?style='.$_GET['style'].'&forum_id='.$_GET['forum_id']);
}
if(isset($_GET['open_topic']) && isset($_SESSION['administrator']))
{
if(!$rMySQLQuery = mysql_query("UPDATE `topics` SET `topic_locked` = '0' WHERE `topic_id` = '".$_GET['topic_id']."' LIMIT 1;"))
{
message_die();
}
@header('Location: view_forum.php?style='.$_GET['style'].'&forum_id='.$_GET['forum_id']);
}
function get_user_info($iUserId)
{
if(!$rMySQLQuery1 = mysql_query("SELECT * FROM members WHERE member_id = '".$iUserId."'"))
{
message_die();
}
if(mysql_num_rows($rMySQLQuery1) == 0)
{
trigger_error('Invalid user ID given: <b>'.$iUserId.'</b>',E_USER_ERROR);
}
return mysql_fetch_assoc($rMySQLQuery1);
}
if(!isset($_GET['topic_id']))
{
die('<p align="center">Het commando \'topic_id\' ontbreekt!</p>');
}
if(!is_numeric($_GET['topic_id']))
{
die('<p align="center">Het commando \'topic_id\' moet een nummer zijn!</p>');
}
if(!isset($_GET['forum_id']))
{
die('<p align="center">Het commando \'forum_id\' ontbreekt!</p>');
}
if(!is_numeric($_GET['forum_id']))
{
die('<p align="center">Het commando \'forum_id\' moet een nummer zijn!</p>');
}
if(!$rMySQLQuery1 = mysql_query("SELECT topic_id,forum_id,topic_locked FROM topics WHERE topic_id = '".$_GET['topic_id']."' AND forum_id = '".$_GET['forum_id']."'"))
{
message_die();
}
if(mysql_num_rows($rMySQLQuery1) == 0)
{
die('<p align="center">Het onderwerp dat je zoekt bestaat niet! <a href="index.php" class="link">Index</a></p>');
}
if(!$rMySQLQuery2 = mysql_query("SELECT forum_naam,forum_id FROM forums WHERE forum_id = '".$_GET['forum_id']."'"))
{
message_die();
}
$aFetch = mysql_fetch_assoc($rMySQLQuery2);
print '<p align="center"><a href="index.php?style='.$_GET['style'].'" class="link">Forum Index</a> >> <a class="link" href="view_forum.php?style='.$_GET['style'].'&forum_id='.$_GET['forum_id'].'">'.stripslashes($aFetch['forum_naam']).'</a></p>';
if(!$rMySQLQuery3 = mysql_query("SELECT * FROM replys WHERE topic_id = '".$_GET['topic_id']."'"))
{
message_die();
}
print '<p align="center"><u> </u></p>';
print '<center><table border="0">';
while($aFetch = mysql_fetch_assoc($rMySQLQuery3))
{
$a_Fetch = mysql_fetch_assoc(mysql_query("SELECT member_id,member_username FROM members WHERE member_username = '".$aFetch['reply_poster']."'"));
$aUserInfo = get_user_info($a_Fetch['member_id']);
$aFetch['reply_poster'] = htmlspecialchars(stripslashes($aFetch['reply_poster']));
if(!$rMySQLQuery4 = mysql_query("SELECT member_handtekening,member_username,member_id,member_posts FROM members WHERE member_username = '".$aFetch['reply_poster']."'"))
{
message_die();
}
$aFetch2 = mysql_fetch_assoc($rMySQLQuery4);
settype($aFetch2['member_posts'],'integer');
$aFetch['reply_message']= str_replace('<','<',$aFetch['reply_message']);
$aFetch['reply_message']= str_replace('>','>',$aFetch['reply_message']);
$aFetch['reply_message']= nl2br(stripslashes($aFetch['reply_message']));
$aFetch['member_rank'] = '<b>'.get_user_rank($aFetch2['member_posts'],$aFetch['reply_poster']).'</b>';
$aFetch['reply_message']= str_replace(
array(':-)',':-(',':D',':P',';)'),
array('<img src="Images/blij.gif">','<img src="Images/sad.gif">','<img src="Images/YAY.gif">','<img src="Images/lol.gif">','<img src="Images/knipoog.gif">'),
$aFetch['reply_message']);
?>
<link href="css/tekst.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
body {
background-color: #000000;
}
a:link {
color: 66ff33;
}
a:visited {
color: 66ff33;
}
a:hover {
color: 0000ff;
}
a:active {
color: 0000ff;
}
body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color: 66ff33;
}
-->
</style>
<tr><td>
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$tekst = 'reply_message';
$woorden = array(kut,lul,sukkel,eikel,mietje);
foreach($woorden as $woord) {
$tekst = str_replace($woord,"***",$tekst);
}
?>
$tekst = 'reply_message';
$woorden = array(kut,lul,sukkel,eikel,mietje);
foreach($woorden as $woord) {
$tekst = str_replace($woord,"***",$tekst);
}
?>
<span class="tekst"><u>Gepost door: <a href='bekijk_profiel.php?style=&user_id=' class='link'>
</a> ()</u></span></td><td></td></tr><tr><td><span class="tekst"><font size='+1'></font> </span> <hr></td></tr>
<tr><td class="tekst"></td></tr>
<span class="tekst">
Code (php)
1
<?php print '<tr>'; if(isset($_SESSION['administrator'])) print '<td><input type="button" value="Close Topic" class="text" onclick="location = \'?style='.$_GET['style'].'&close_topic=1&topic_id='.$_GET['topic_id'].'&forum_id='.$_GET['forum_id'].'\'"> <input type="button" value="Open Topic" class="text" onclick="location = \'?style='.$_GET['style'].'&open_topic=1&topic_id='.$_GET['topic_id'].'&forum_id='.$_GET['forum_id'].'\'"></td><td>'.list_forum_ids().'</td>'; if(isset($_SESSION['gebruiker'])) print '<td><input type="button" class="text" value="Nieuw Topic" onclick="location = \'new_topic.php?style='.$_GET['style'].'\'"></td><td><input type="button" value="Reply" class="text" onclick="location = \'#reply\'"></td>'; if(isset($_SESSION['gebruiker']) && $_SESSION['gebruiker'] == $aFetch['reply_poster']) print '<td><input type="button" value="Bewerken" class="text" onclick="location =\'bewerk.php?forum_id='.$_GET['forum_id'].'&style='.$_GET['style'].'&reply_id='.$aFetch['reply_id'].'\'"></td>'; print '</tr>'; ?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
echo '<tr><td><u> </u></td></tr>';
}
echo '</table>';
print '<p align="center"><u> </u></p>';
$aFetch3 = mysql_fetch_assoc($rMySQLQuery1);
if($aFetch3['topic_locked'] == '1')
{
print '<center><strong>Topic gesloten.</strong>';
}
else
{
if(isset($_SESSION['gebruiker']))
{
echo '<a name="reply">';
include 'new_reply.php';
echo "</a>";
}
}
endHTML();
?>
echo '<tr><td><u> </u></td></tr>';
}
echo '</table>';
print '<p align="center"><u> </u></p>';
$aFetch3 = mysql_fetch_assoc($rMySQLQuery1);
if($aFetch3['topic_locked'] == '1')
{
print '<center><strong>Topic gesloten.</strong>';
}
else
{
if(isset($_SESSION['gebruiker']))
{
echo '<a name="reply">';
include 'new_reply.php';
echo "</a>";
}
}
endHTML();
?>
</span>
Gewijzigd op 01/01/1970 01:00:00 door Daan
Probeer ook eens hetvolgende bovenaan je code te zetten (om fouten zichtbaar te maken)
er gebeurt helemaal niks. geen fout melding of wat..
Ik vind het met de str_replace geen slimme oplossing, gebruik beter eregi replace. Waarom: Omdat er dan hoofdletter insensitive wordt gezocht. Dus shit en ShIt worden aangepast, en je hebt er maar 1 waarde in je array voor nodig.
@TS
Zoek hier bij niet op de woorden met spaties ervoor en na, dan krijg je namelijk dat gebruikers andere dingen proberen @shit@ laat die dan wel gewoon zien, en _shit_ ook. Dus zoek er gewoon op of die woorden voorkomen en vervang ze.
want ik ken geen scheldwoorden waar je een gewoon woord van kan maken..
maar als je mijn code zie, en dan het script dan zou ie het toch moeten doen?