Scheldwoorden filter (met Mysql en PHP)
Ik zit met een vraag ik wil op mijn blog berichten een scheldwoorden filter zetten zoals dit.
Code (php)
1
2
3
2
3
$bericht=str_replace("Kat","***", $rij["Bericht"]);
$bericht=str_replace("KAT","***", $rij["Bericht"]);
$bericht=str_replace("kat","***", $rij["Bericht"]);
$bericht=str_replace("KAT","***", $rij["Bericht"]);
$bericht=str_replace("kat","***", $rij["Bericht"]);
Nu zien jullie al ik moet het woordje kat 3x uitwerken op drie verschillende manieren en eigenlijk nog zelfs meer!
Heeft iemand een script dit dit met het toevoegen van 1 woord meteen alle soorten en maten kut eruit haalt zonder dat ik 10 rijen str_replace heb?
En dan eigenlijk een andere vraag ik wil dat hij deze scheldwoorden uit een database haalt zodat ik die online kan laten toevoegen.
nu kreeg ik van iemand dit scriptje
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
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
if ($scheldwoordenfilter == "ja") {
$scheld_query = mysql_query("SELECT * FROM `scheldfilter` ORDER BY `id`");
while($scheldrecord = mysql_fetch_assoc($scheld_query))
{
$hetscheldwoord = $scheldrecord['scheldwoord'];
$devervanging = $scheldrecord['vervanging'];
$bericht = str_replace('{$hetscheldwoord}', '{$devervanging}', $bericht);
$afzender = str_replace('{$hetscheldwoord}', '{$devervanging}', $afzender);
}
}
$scheld_query = mysql_query("SELECT * FROM `scheldfilter` ORDER BY `id`");
while($scheldrecord = mysql_fetch_assoc($scheld_query))
{
$hetscheldwoord = $scheldrecord['scheldwoord'];
$devervanging = $scheldrecord['vervanging'];
$bericht = str_replace('{$hetscheldwoord}', '{$devervanging}', $bericht);
$afzender = str_replace('{$hetscheldwoord}', '{$devervanging}', $afzender);
}
}
Nou werkt dit script niet maar hebben jullie wel een idee hoe ik het zou willen hebben.
Nou is het de bedoeling dat hij in dit scriptje komt
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
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
<?php
$sql = "SELECT * FROM Reacties ORDER BY Datum DESC, Tijd DESC";
$resultaat = mysql_query($sql) or die(mysql_error());
echo '<table width="430" border="0" align="center" cellpadding="0" cellspacing="0">';
while ($rij = mysql_fetch_assoc($resultaat)) {
echo '<tr>
<td width="60" rowspan="2"><img src="';
echo $afb;
echo '" width="60" height="60" /></td>
<td width="12"> </td>
<td width="208" class="chattekst">Door: <a href="mailto:';
echo $rij["Email"];
echo '" class="chattekst">';
echo $rij["Naam"];;
echo '</a></td>
<td width="150" class="chattekst">';
echo strftime('%d/%m/%Y', strtotime ($rij["Datum"]));
echo ' om ';
echo $rij["Tijd"];
echo '</td>
</tr>
<tr>
<td> </td>
<td colspan="2" class="chatbericht">';
echo nl2br($rij["Bericht"];);
echo '</td>
</tr>
<tr>
<td colspan="4"><hr></td>
</tr>';
}
echo "\n";
echo '</table>';
?>
$sql = "SELECT * FROM Reacties ORDER BY Datum DESC, Tijd DESC";
$resultaat = mysql_query($sql) or die(mysql_error());
echo '<table width="430" border="0" align="center" cellpadding="0" cellspacing="0">';
while ($rij = mysql_fetch_assoc($resultaat)) {
echo '<tr>
<td width="60" rowspan="2"><img src="';
echo $afb;
echo '" width="60" height="60" /></td>
<td width="12"> </td>
<td width="208" class="chattekst">Door: <a href="mailto:';
echo $rij["Email"];
echo '" class="chattekst">';
echo $rij["Naam"];;
echo '</a></td>
<td width="150" class="chattekst">';
echo strftime('%d/%m/%Y', strtotime ($rij["Datum"]));
echo ' om ';
echo $rij["Tijd"];
echo '</td>
</tr>
<tr>
<td> </td>
<td colspan="2" class="chatbericht">';
echo nl2br($rij["Bericht"];);
echo '</td>
</tr>
<tr>
<td colspan="4"><hr></td>
</tr>';
}
echo "\n";
echo '</table>';
?>
Of is het misschien beter om deze filter te doen voordat hij in de database word gezet.
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
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
<?
$userErrors = Array();
if(isset($_POST['posten'])){
if( !isset($_POST['Naam']) || $_POST['Naam'] == '' )
{
$userErrors[] = 'U heeft geen naam ingevuld';
}
if( !isset($_POST['Email']) || $_POST['Email'] == '' )
{
$userErrors[] = 'U heeft e-mailadres ingevuld';
}
if( !isset($_POST['Bericht']) || $_POST['Bericht'] == '' )
{
$userErrors[] = 'U heeft bericht ingevuld';
}
if( count($userErrors) == 0 )
{
$iQuery = "INSERT INTO Reacties (Naam, Email, Bericht, Datum, Tijd, IP) VALUES ('".mysql_real_escape_string(ucfirst(trim($_POST['Naam'])))."',
'".mysql_real_escape_string($_POST['Email'])."', '".mysql_real_escape_string($_POST['Bericht'])."', CURDATE(), NOW(), '".$_SERVER['REMOTE_ADDR']."')";
$result = mysql_query($iQuery, $sqlLink);
if( $iQuery === false )
{
SQLerror(mysql_error(), 'Uw bericht is niet verstuurd!', __FILE__);
}
else
{
if( mysql_affected_rows($sqlLink) > 0 )
{
$resultMessage = 'Uw bericht is succesvol verstuurd! U hoort zo snel mogelijk van ons!';
$msg = "Geachte Webmaster,<br><br>";
$msg .= "<b>".$_POST['Naam']."</b> heeft een bericht achter gelaten op uw site!<br><br>";
$msg .= "Het volgende bericht heeft hij achtergelaten op de website:<br>";
$msg .= "<b>".nl2br($_POST['Bericht'])."</b><br><br>";
$msg .= "Wilt u deze persoon terug antwoorden <a href=http://www.marksdomein.nl>klik hier!</a><br>";
$msg .= "of stuur hem een mailtje op: <b><a href=mailto:".$_POST['Email'].">".$_POST['Email']."</a></b><br><br><br>";
$msg .= "<b><u>Overige gegevens:</u></b><br>";
$msg .= "Datum: " . date("d.m.Y") . "<br>";
$msg .= "Tijd: " . date("H:i") . "<br>";
$msg .= "Ip addr: " . $_SERVER['REMOTE_ADDR'] . "<br><br>";
$msg .= "Met vriendelijke groeten,<br><br>Webmaster Mark (SonicGFX)";
mail($to, $subject, $msg, $headers);
}
else
{
$userError[] = 'Het opslaan is niet gelukt, probeer het later nog eens.';
}
}
}
}
?>
$userErrors = Array();
if(isset($_POST['posten'])){
if( !isset($_POST['Naam']) || $_POST['Naam'] == '' )
{
$userErrors[] = 'U heeft geen naam ingevuld';
}
if( !isset($_POST['Email']) || $_POST['Email'] == '' )
{
$userErrors[] = 'U heeft e-mailadres ingevuld';
}
if( !isset($_POST['Bericht']) || $_POST['Bericht'] == '' )
{
$userErrors[] = 'U heeft bericht ingevuld';
}
if( count($userErrors) == 0 )
{
$iQuery = "INSERT INTO Reacties (Naam, Email, Bericht, Datum, Tijd, IP) VALUES ('".mysql_real_escape_string(ucfirst(trim($_POST['Naam'])))."',
'".mysql_real_escape_string($_POST['Email'])."', '".mysql_real_escape_string($_POST['Bericht'])."', CURDATE(), NOW(), '".$_SERVER['REMOTE_ADDR']."')";
$result = mysql_query($iQuery, $sqlLink);
if( $iQuery === false )
{
SQLerror(mysql_error(), 'Uw bericht is niet verstuurd!', __FILE__);
}
else
{
if( mysql_affected_rows($sqlLink) > 0 )
{
$resultMessage = 'Uw bericht is succesvol verstuurd! U hoort zo snel mogelijk van ons!';
$msg = "Geachte Webmaster,<br><br>";
$msg .= "<b>".$_POST['Naam']."</b> heeft een bericht achter gelaten op uw site!<br><br>";
$msg .= "Het volgende bericht heeft hij achtergelaten op de website:<br>";
$msg .= "<b>".nl2br($_POST['Bericht'])."</b><br><br>";
$msg .= "Wilt u deze persoon terug antwoorden <a href=http://www.marksdomein.nl>klik hier!</a><br>";
$msg .= "of stuur hem een mailtje op: <b><a href=mailto:".$_POST['Email'].">".$_POST['Email']."</a></b><br><br><br>";
$msg .= "<b><u>Overige gegevens:</u></b><br>";
$msg .= "Datum: " . date("d.m.Y") . "<br>";
$msg .= "Tijd: " . date("H:i") . "<br>";
$msg .= "Ip addr: " . $_SERVER['REMOTE_ADDR'] . "<br><br>";
$msg .= "Met vriendelijke groeten,<br><br>Webmaster Mark (SonicGFX)";
mail($to, $subject, $msg, $headers);
}
else
{
$userError[] = 'Het opslaan is niet gelukt, probeer het later nog eens.';
}
}
}
}
?>
Kan iemand mij vertellen hoe ik dit het beste kan implementeren in mij script? Om dit voor elkaar te krijgen?
Alvast bedankt,
Gewijzigd op 27/09/2012 22:11:23 door Mark van den Brink
Wel misschien een idee.
Zou je in de database niet beter een table "scheldwoorden" kunnen aanmaken.
Vervolgens waar je het zelf wens deze op de berichten laten controleren.
Het controleren zou ik dan doen op het moment je het toont op de site. Zo hou je de orginele data in takt. Ook een voordeel is dat je dan de scheldwoorden bewerkbaar houd en niet in de code hoeft te duiken als je het systeem ergens anders wilt gebruiken waar de woorden wel mogen.
Is dit misschien een na denk punt voor je?
Gewijzigd op 27/09/2012 20:35:57 door Frank WD
Om de hoofdletter/kleine letter varianten in 1 keer te checken kan je natuurlijk gewoon strtolower() doen op je bericht ;)
Edit:
Toevoeging: Het geleverde script is heel slecht want dat haalt ALLE scheldwoorden op en gaat in php zitten processen of het scheldwoord in de arry zit. Knoeiwerk. De query moet bijvoorbeeld zijn:
$scheld_query = mysql_query("SELECT * FROM scheldfilter where scheldwoord = $te_testen_scheldwoord");
$scheld_query = mysql_query("SELECT * FROM scheldfilter where scheldwoord = $te_testen_scheldwoord");
Gewijzigd op 27/09/2012 20:46:07 door John D
je kan dus meerdere woorden tegelijk doen om in de 1e paramater een array te stoppen en str_ireplace gebruiken voor case insensitive .
Gewijzigd op 27/09/2012 21:19:08 door Jaron T
Misschien is het verstandig om hier op het forum de scheldwoorden ook beetje te maskeren. Voorbeeld: k*t, l*l. Dit lijkt me wat netter staan op het forum, maar ook beetje uit respect voor andere forum gebruikers en lezers.
Goede opmerking van Frank. Maar denk dat je daarmee ook gelijk een aandachtspunt aanhaalt voor TS. Ga je ook controleren op 'woorden' als k*t, k#t, etc.?
@Frank: Momenteel heb ik ook in me MySQL een Tabel met scheldwoorden zitten maar ik weet niet precies hoe ik met een mooie script die scheldwoorden uit een database haal en die netjes in een array zet.
Zoals Jaron T zegt, wat overigens prima werkt op de manier hoe hij het zegt nu is alleen dus mijn vraag hoe kan ik die mooie array maken vanuit een database?
@Jaron T: Bedankt je case insensitive werkt inderdaad perfect en met 1 woord maskeer je meteen alle worden top!
@John D: Jou scriptje snap ik niet helemaal omdat je de WHERE clause niet kan gebruiken omdat hij een heel bericht moet doorzoeken en niet enkel 1 woord?
Off-topic: Ben ik helemaal eens met Frank en aangezien dit nog niet in de site zit wijzig ik mijn posts om het zelf netjes te houden vanaf nu spreek ik over kat en hond!
Toevoeging op 27/09/2012 23:01:17:
Aan iedereen het is me gelukt wat ik wilde met O.A. een andere topic hier op de site: http://www.phphulp.nl/php/forum/topic/scheldwoorden-filter/67637/
En die een beetje aangepast met de boilerplate van Wouter...Ik hoop dat ik het goed gedaan heb hij werkt in ieder geval.
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
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
<?php
$filter = "SELECT * FROM Scheldwoordenfilter";
if ( $result = mysql_query( $filter )) {
if( $result === false )
{
SQLerror(mysql_error(), 'Uw scheldwoordenfilter is niet geactiveerd', __FILE__);
}
else
{
if( mysql_num_rows($result) > 0 ) {
$scheldwoorden = array();
$vervang = array();
while ( $row = mysql_fetch_array( $result )) {
$scheldwoorden[] = $row['Scheldwoord'];
$vervang[] = $row['Vervang'];
}
}
else
{
$userError[] = 'Uw scheldwoordenfilter heeft niks vervangen';
}
}
}
$bericht = str_ireplace( $scheldwoorden, $vervang, $rij['Bericht']);
?>
$filter = "SELECT * FROM Scheldwoordenfilter";
if ( $result = mysql_query( $filter )) {
if( $result === false )
{
SQLerror(mysql_error(), 'Uw scheldwoordenfilter is niet geactiveerd', __FILE__);
}
else
{
if( mysql_num_rows($result) > 0 ) {
$scheldwoorden = array();
$vervang = array();
while ( $row = mysql_fetch_array( $result )) {
$scheldwoorden[] = $row['Scheldwoord'];
$vervang[] = $row['Vervang'];
}
}
else
{
$userError[] = 'Uw scheldwoordenfilter heeft niks vervangen';
}
}
}
$bericht = str_ireplace( $scheldwoorden, $vervang, $rij['Bericht']);
?>
Super bedankt allemaal!
Gewijzigd op 27/09/2012 23:01:49 door Mark van den Brink
Maar heb toch 1 vraagje die mij gelijk opvalt.
Ik zie dat je de woorden vervangt door iets uit de database.
Ik neem aan dat je toch gewoon al die woorden omzet naar ***.
Of heb je voor alle woorden een aparte vervang woord?
Als je het doet met *** kun je dan niet beter dit uit de database te laten?
Want dat scheelt je weer iets werken in mysql.
Maar misschien doe ik inderdaad gewoon **** of een waarschuwing
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
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
<?php
$sText = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque massa enim, fermentum iaculis posuere id, suscipit eu mauris. Mauris eu lectus massa. Praesent consequat molestie fermentum. Suspendisse leo mi, pulvinar ac iaculis id, lacinia non lacus. Nulla tristique ligula non metus vestibulum vestibulum venenatis dui convallis. Aliquam ut metus sed nisl pretium scelerisque quis et dolor. Morbi elementum sodales mauris ac tristique.
Curabitur pulvinar blandit orci eu rutrum. Pellentesque ornare augue eu erat condimentum interdum. Etiam mollis iaculis metus, sed placerat odio fermentum quis. Phasellus nulla quam, placerat sit amet rhoncus eu, semper et purus. Praesent quis neque mi, mattis bibendum leo. Nam quis nibh sit amet nunc venenatis lacinia ac et tortor. Integer volutpat hendrerit pellentesque. Quisque nec augue ut purus iaculis vulputate. In hac habitasse platea dictumst. Quisque quis dolor est, tincidunt adipiscing nibh.
Fusce neque purus, congue ut vestibulum quis, faucibus ut orci. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse eu eros ut turpis rutrum vulputate. Vestibulum facilisis diam et metus sagittis nec placerat lorem luctus. Duis vitae odio nec odio suscipit dignissim. Integer dignissim, purus eget aliquam commodo, orci dolor venenatis lacus, eget laoreet velit massa nec risus. Aenean arcu eros, laoreet ut varius ac, ultricies eu diam. Nunc fermentum neque non lectus mattis ullamcorper. Nam porta, ante sit amet hendrerit tristique, lacus risus lobortis urna, vitae aliquam ipsum odio eget ante. Nullam eleifend, sapien sit amet vehicula pharetra, lectus est venenatis dolor, in varius orci eros in libero. Donec at metus at odio viverra mattis quis nec augue.
Aliquam adipiscing convallis nibh et fringilla. Integer vestibulum mi eget leo posuere lobortis non eu nunc. Cras enim odio, aliquam id dignissim id, laoreet blandit lectus. In hac habitasse platea dictumst. Nulla facilisi. Maecenas tempor sem in ante ultrices tristique. Proin ornare, dolor a imperdiet interdum, enim nunc accumsan sapien, hendrerit mattis felis lorem ac massa. Ut et turpis sit amet enim luctus suscipit a sit amet nunc. Aenean bibendum dictum iaculis. Ut tortor metus, tincidunt vitae fringilla sed, molestie vitae lacus. Mauris et nulla massa, at cursus enim. Vivamus non aliquam justo. Aenean et metus id erat commodo ornare. Donec eu tempor lectus.
Nunc non ligula turpis. Sed tempor ullamcorper nisi, quis auctor turpis accumsan id. Donec non orci at est bibendum dictum non ac eros. Nam vitae nisi at ipsum congue blandit. Cras semper luctus sem a elementum. Nunc consequat sem sed ante aliquet at porta lorem dictum. Maecenas vel turpis elit. Donec pellentesque neque ac neque faucibus a commodo sem pretium. Donec in justo in tellus malesuada tempus. Phasellus lectus purus, laoreet mattis dignissim non, tempor ut ante. Vivamus sagittis, felis id mattis porta, magna magna egestas quam, nec molestie arcu nisl vitae urna. Donec id urna vitae libero vehicula pretium. Quisque in dolor vitae eros posuere fringilla. In eget ipsum id massa tempus ornare. Vestibulum justo nisl, molestie sit amet placerat ut, facilisis vitae nisl. Phasellus dictum enim ut ipsum sollicitudin interdum.';
$aCurseWords = array('lorem', 'cum', 'et', 'orci');
echo maskWords($sText, $aCurseWords);
function maskWords($sData, $aCurseWords)
{
$sResult = '';
$aMatches = array();
// Find all words
preg_match_all('/([a-zA-Z]+)/', $sData, $aMatches, PREG_OFFSET_CAPTURE);
foreach($aMatches[0] as $sMatch)
{
$bFound = false;
foreach($aCurseWords as $sCurseWord)
{
if(strcasecmp($sCurseWord, $sMatch) === 0)
{
$bFound = true;
break;
}
}
if($bFound)
{
$sResult .= str_repeat('*', strlen($sMatch));
}
else
{
$sResult .= $sMatch;
}
}
return $sResult;
}
?>
$sText = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque massa enim, fermentum iaculis posuere id, suscipit eu mauris. Mauris eu lectus massa. Praesent consequat molestie fermentum. Suspendisse leo mi, pulvinar ac iaculis id, lacinia non lacus. Nulla tristique ligula non metus vestibulum vestibulum venenatis dui convallis. Aliquam ut metus sed nisl pretium scelerisque quis et dolor. Morbi elementum sodales mauris ac tristique.
Curabitur pulvinar blandit orci eu rutrum. Pellentesque ornare augue eu erat condimentum interdum. Etiam mollis iaculis metus, sed placerat odio fermentum quis. Phasellus nulla quam, placerat sit amet rhoncus eu, semper et purus. Praesent quis neque mi, mattis bibendum leo. Nam quis nibh sit amet nunc venenatis lacinia ac et tortor. Integer volutpat hendrerit pellentesque. Quisque nec augue ut purus iaculis vulputate. In hac habitasse platea dictumst. Quisque quis dolor est, tincidunt adipiscing nibh.
Fusce neque purus, congue ut vestibulum quis, faucibus ut orci. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse eu eros ut turpis rutrum vulputate. Vestibulum facilisis diam et metus sagittis nec placerat lorem luctus. Duis vitae odio nec odio suscipit dignissim. Integer dignissim, purus eget aliquam commodo, orci dolor venenatis lacus, eget laoreet velit massa nec risus. Aenean arcu eros, laoreet ut varius ac, ultricies eu diam. Nunc fermentum neque non lectus mattis ullamcorper. Nam porta, ante sit amet hendrerit tristique, lacus risus lobortis urna, vitae aliquam ipsum odio eget ante. Nullam eleifend, sapien sit amet vehicula pharetra, lectus est venenatis dolor, in varius orci eros in libero. Donec at metus at odio viverra mattis quis nec augue.
Aliquam adipiscing convallis nibh et fringilla. Integer vestibulum mi eget leo posuere lobortis non eu nunc. Cras enim odio, aliquam id dignissim id, laoreet blandit lectus. In hac habitasse platea dictumst. Nulla facilisi. Maecenas tempor sem in ante ultrices tristique. Proin ornare, dolor a imperdiet interdum, enim nunc accumsan sapien, hendrerit mattis felis lorem ac massa. Ut et turpis sit amet enim luctus suscipit a sit amet nunc. Aenean bibendum dictum iaculis. Ut tortor metus, tincidunt vitae fringilla sed, molestie vitae lacus. Mauris et nulla massa, at cursus enim. Vivamus non aliquam justo. Aenean et metus id erat commodo ornare. Donec eu tempor lectus.
Nunc non ligula turpis. Sed tempor ullamcorper nisi, quis auctor turpis accumsan id. Donec non orci at est bibendum dictum non ac eros. Nam vitae nisi at ipsum congue blandit. Cras semper luctus sem a elementum. Nunc consequat sem sed ante aliquet at porta lorem dictum. Maecenas vel turpis elit. Donec pellentesque neque ac neque faucibus a commodo sem pretium. Donec in justo in tellus malesuada tempus. Phasellus lectus purus, laoreet mattis dignissim non, tempor ut ante. Vivamus sagittis, felis id mattis porta, magna magna egestas quam, nec molestie arcu nisl vitae urna. Donec id urna vitae libero vehicula pretium. Quisque in dolor vitae eros posuere fringilla. In eget ipsum id massa tempus ornare. Vestibulum justo nisl, molestie sit amet placerat ut, facilisis vitae nisl. Phasellus dictum enim ut ipsum sollicitudin interdum.';
$aCurseWords = array('lorem', 'cum', 'et', 'orci');
echo maskWords($sText, $aCurseWords);
function maskWords($sData, $aCurseWords)
{
$sResult = '';
$aMatches = array();
// Find all words
preg_match_all('/([a-zA-Z]+)/', $sData, $aMatches, PREG_OFFSET_CAPTURE);
foreach($aMatches[0] as $sMatch)
{
$bFound = false;
foreach($aCurseWords as $sCurseWord)
{
if(strcasecmp($sCurseWord, $sMatch) === 0)
{
$bFound = true;
break;
}
}
if($bFound)
{
$sResult .= str_repeat('*', strlen($sMatch));
}
else
{
$sResult .= $sMatch;
}
}
return $sResult;
}
?>
Gewijzigd op 28/09/2012 21:38:21 door Martijn Wieringa
Het gaat altijd om hele woorden dus hij zal nooit alleen een paar letters vervangen zoals bijv kk is een scheld woord maar deze kan ik natuurlijk niet vervangen anders kan lekker ook niet. en zoals jij het volgens mij aangeeft wil je alle woorden 1 voor 1 checken en kijken of hij gelijk is aan echter is daar weer zo bij dat als iemand hond zegt dat maskeert hij die maar als er dan hondsdol staat maskeert hij hem dan ook?