Willkommen in der Webstatt Zum Webstatt Blog und Stories
fish fish am 01.06.06 19:53

guten tag ich habe ein ziemliches billig-problem, und ich habs gerade auf keiner codeschnipselseite gefunden, also

ich will sowas:

wenn der $text einige böse worte enthält, dann findet leider kein eintrag in die datenbank statt....

if(WASKOMMTHIERREIN???){
echo"leiderkein eintrag, blöder spambot";
}
else{
//eintrag
}

netcup.de Warum gibt es hier Werbung?
Franky Franky am 01.06.06 19:54

http://de2.php.net/manual/en/function.strpos.php

fish fish am 01.06.06 20:01

& wenn ich mehr als en string haben will?
also VEX, SORN, PIAGRA und so weiter?

Franky Franky am 01.06.06 20:40

if(<wort1+strpos> || <wort2+strpos> || <wort3+strpos> || ...) // gefunden
else // nö

Sven Sven am 01.06.06 21:01

Edit : Kleine Änderung vorgenommen...

Hab dir grad ne kleine Funktion geschrieben :
<?php
function badword ($haystack, $needle) {
$is_in = FALSE;

if (is_array ($needle)) {
foreach ($needle as $element) {
if (strpos ($haystack, $element)) {
$is_in = TRUE;
break;
}
}
} else {
if (strpos ($haystack, $needle)) {
$is_in = TRUE;
}
}

return $is_in;
}
?>


Funktionsaufruf und -weise wie bei strpos. Nur kannst bei $needle auch ein Array übergeben ;)

fish fish am 06.06.06 22:13

nnachdem ich den funtionsaufruf in der erklärung nur halb verstehe, kannst du mir mal ein beispiel für deine funktion geben (am besten mit mehreren badwords?)

Sven Sven am 06.06.06 22:57

Code nochmal kommentiert:
<?php
function badword ($haystack, $needle) {
$is_in = FALSE;

if (is_array ($needle)) { // Es wird ueberprueft ob ein mehrere Badwords (Array) oder ein einziges Badword angeben ist
foreach ($needle as $element) { // Mit der foreach-Schleife werden alle Array-Elemente durchlaufen
if (strpos ($haystack, $element)) { // Es wird mit strpos ueberprueft ob das Element (Badword) im Text ist
$is_in = TRUE; // Rueckgabevariable wird ggf. auf TRUE gesetzt (wurde gefunden)
break;
}
}
} else {
if (strpos ($haystack, $needle)) { // Selbes Spiel wie oben nur mit einem Badword
$is_in = TRUE;
}
}

return $is_in;
}
?>


Hier jetzt 2 Beispiele.....

Unser Text :
Wer andern einen Porno dreht hat ein Pornodrehgerät, du Hund!

Wir definieren als Badwords : Porno, dreht und Hund

<?php
$text = 'Wer andern einen Porno dreht hat ein Pornodrehgerät, du Hund!'; // Wir definieren unseren Text
$badwords = array ('Porno', 'dreht', 'Hund'); // Wir definieren die Badwords

if (badword ($text, $badwords) == TRUE) { // Wir pruefen den Rueckgabewert der Funktion
echo 'Eines der Woerter in $badwords ist im Text vorhanden';
} else {
echo 'Keines der Woerter in $badwords ist im Text vorhanden';
}
?>


Ich hoffe es ist so jetzt verständlich. Eigentlich hätte auch das hier gereicht : strpos
Meine Funktion wird nämlich genauso aufgerufen.

fish fish am 06.06.06 23:34

DANKE!

Sven Sven am 07.06.06 00:46

No Problemo ;)

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt