Versio

Scheldwoordenfilter? #@@#%@%

Overzicht Reageren

Pieter van Linschoten

Pieter van Linschoten

06/11/2005 17:38:00
Quote Anchor link
Hallo beste php'ers, ik heb weer eens een vraag.
Ik ben nu bezig aan een forum voor een website, waar een scheldwoordenfilter in moet komen. Ik was gelijk al druk begonnen met schrijven en had een leuke functie.
Helaas: PHP laat het niet toe dat gedefineerd(fuck) waarde(FuCk) veranderd naar een andere waarde.

Op de server staat PHP4, dus str_ireplace() is helaas niet mogenlijk.
Ik heb nu deze functie, maar daar ben ik niet tevreden mee :(
Wie kan me helpen aan een script dat scheldwoorden kan veranderen, naar bijvoorbeeld !@#$#%, zonder dat ik elk scheldwoord op ieder mogelijke manier hoef in te vullen in de database.

Dit is mijn code nu:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
function filter($text){
    $search=mysql_query("SELECT word,result FROM filter");
    while(list($searchstr,$searchrpl)=mysql_fetch_row($search)){
        for($i=0;$i<(strlen($text)-strlen($searchstr));$i++){
            if(strtolower(substr($text,$i,strlen($searchstr)))==strtolower($searchstr)){
                $text=substr_replace($text,$searchrpl,$i,strlen($searchstr));
            }
        }
    }

    return $text;
}

?>
 
PHP hulp

PHP hulp

25/05/2012 15:11:55
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
EdwinG

EdwinG

06/11/2005 17:49:00
Quote Anchor link
Hoofd en kleine letters is niet zo'n probleem, maar een functie vinden die cijfers en andere vervorming meeneemt is een stuk lastiger.

Voor alleen hoof-kleine letters, kijk eens naar
preg_replace()
Daar kun je een array gebruiken met patterns (database records in array stoppen), die allemaal door de zelfde string vervangen worden. (of allemaal door een andere string)
 
Legolas

Legolas

06/11/2005 17:54:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$text
= preg_replace("/" . $woord . "/i", "***", $text);

?>
 
Pieter van Linschoten

Pieter van Linschoten

06/11/2005 17:58:00
Quote Anchor link
ik weet al wat er mis was, ik had geen result in de database ingevoerd... dus kreeg je een spatie...

Nu heb ik dat wel gedaan en geeft ie een mooie !#$#%$# wanneer er geen string is en waneer die er wel is, geeft ie het vervangende woord :D
 



Overzicht Reageren

Get Adobe Flash player