Wortfilter

jürgen-schulz

Grünschnabel
Hallo Forum,

ich habe ein Problem das ich nicht allein lösen kann.

Ich habe in einem Formular ein Textfeld zur Eingabe von freiem fließ Text.
Jetzt kommt es vor das die User Ihre Mailadresse in Form von irgendwas@seite.de in dieses Textfeld schreiben und das dann in der Datenbank gespeichert wird.
Das möchte ich unterbinden indem ich die Mailadresse durch das Wort E-Mail ersetzten will.

Ich versuche das so:
PHP:
$suchmuster = '(^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$)';  
$ersatz = 'E-Mail';  

$data_w_teile = explode(" ", $data_w);  
foreach($data_w_teile as $_go_teile) {  
$data_w = eregi_replace($suchmuster, $ersatz, $_go_teile); 

echo $data_w; // DastehtderSatzjetztsomitderE-Maildrin. 

} 
echo $data_w; // drin.
Wie bekomme ich das jetzt in eine lesbare Form? Was mache ich hier falsch?
Hat einer eine Idee oder kennt gar die Lösung?

Vielen Dank für Eure Hilfe
Gruß Jürgen
 
Hi Jürgen,

ohne großen Test scheint das hier zu funktionieren:

PHP:
<?php
if (isset($_POST['test'])) {
     echo eregi_replace("([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})", "eMail", $_POST["test"]);
 }

?>
<form name="test" action="test.php" method="post" enctype="text/html">
<input type="text" name="test" value="" size="20" maxlength="50" />
<input type="Submit" name="send" value="Save" />
</form>

Ein primitives Formular mit einem Textfeld. Wenn man eine eMail Adresse eingibt und das Formular abschickt wird die eMail Adresse durch das Wort "eMail" ersetzt.

Gruß Thomas
 
Hallo tombe,

ja, das ist so richtig und funktioniert auch super.
Aber ich habe ein Textarea Feld und meine Teichenkette ist z.B. diese:
Ich will hier meine Adresse info@seite.de hinterlassen damit viel Spam bei mir ankommt.
Jetzt will ich den String info@seite.de gegen E-Mail austauschen.

Gruß
Jürgen
 
Versteh jetzt nicht was du meinst.

Wenn man diesen Text in das Textfeld eingibt und absendet wird die eMail Adresse doch durch das Wort "eMail" ersetzt.
 
Hallo tombe,

PHP:
// Das ist der Text der im Textarea Feld eingegeben wurde
// Ich will hier meine Adresse info@seite.de hinterlassen damit viel Spam bei mir ankommt.
<?php 
if (isset($_POST['test'])) { 
$_data_text =  eregi_replace("([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})", "eMail", $_POST["test"]); 
 } 
// Jetzt wird $_data_text in die Datenbank geschrieben

// Anschließend wird $_data_text wieder aus der Datenbank gelesen und im Feld wieder angezeigt.
// Dann soll es heißen
// Ich will hier meine Adresse eMail hinterlassen damit viel Spam bei mir ankommt.
?> 

<form name="test" action="test.php" method="post" enctype="text/html"> 
<Textarea type="text" name="test" value="" size="20" maxlength="50" /> 
<?php echo $_data_text; 
// Da steht dan nichts mehr drin! Die Variable $_data_text ist leer
?> 
</Textarea>
<input type="Submit" name="send" value="Save" /> 
</form>

So sieht es bei mir aus!
 
Zuletzt bearbeitet:
Also wenn ich den Code teste den du oben eingetragen hast, passiert genau das was passieren soll.

Der Fehler liegt somit wohl in dem Teil wo die Daten gespeichert werden.
 
Hallo tombe,

dann muß ich das ganze mal heute Abend noch mal durchsehen ob ich da irgendwo noch einen Fehler habe. Oft sieht man den Wald vor lauter Bäumen nicht!

Ich poste dann wieder.

Bis dahin schon mal Danke.
 
Hallo tombe,

nein das funktioniert nicht. Ich habe es gerade getestet.
Eingabe ins Formular: Das ist meine Mailadesse info@schulzj.de die ich im Text erwähnen will.

PHP:
$suchmuster = '(^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$)';
$ersatz = 'E-Mail';
$data_w_teile = explode(" ", $data_w);
foreach($data_w_teile as $_go_teile) {
$data_w = eregi_replace($suchmuster, $ersatz, $_go_teile);
echo $data_w;  // Ausgabe= DasistmeineMailadesseE-MaildieichimTexterwähnenwill. 
}
echo $data_w;  // Ausgabe= will.
Also innerhalb der Schleife ist es gewandelt und außerhalb ist nur noch will. zu sehen und wird auch nur in die Datenbank geschrieben.
 
Hi
gerade erfolgreich getestet:
PHP:
$str = 'Ich lasse meine emailadresse irgendwas@foo.bar hier fuer spam';
$pattern = '/.?(\w*@\w*\.\w*).?/';
preg_match($pattern,$str,$matches);
echo str_replace($matches[1],'EMAIL',$str);
 
Sorry ich komme nicht mit wo das Problem ist.

Ich habe den folgenden Code genommen:

PHP:
<?php
// Das ist der Text der im Textarea Feld eingegeben wurde
// Ich will hier meine Adresse info@seite.de hinterlassen damit viel Spam bei mir ankommt.

if (isset($_POST['test'])) {
	$_data_text =  eregi_replace("([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})", "eMail", $_POST["test"]);
 }
// Jetzt wird $_data_text in die Datenbank geschrieben

// Anschließend wird $_data_text wieder aus der Datenbank gelesen und im Feld wieder angezeigt.
// Dann soll es heißen
// Ich will hier meine Adresse eMail hinterlassen damit viel Spam bei mir ankommt.
?>

<form name="test" action="test.php" method="post" enctype="text/html">
<textarea name="test" cols="50" rows="5"/>
<?php echo @$_POST["test"];
// Da steht dan nichts mehr drin! Die Variable $_data_text ist leer
?>
</textarea>
<input type="Submit" name="send" value="Save" />
</form>

<?php echo @$_data_text; ?>

und so geändert das in der Textarea der Originaltext stehen bleibt und der geänderte Text unterhalb ausgegeben wird.

Das Ergebnis sieht man auf dem Bild. Wenn ich jetzt nicht die ganze Zeit was falsch verstehe ist es doch genau das was du haben willst
 

Anhänge

  • email.jpg
    email.jpg
    29,5 KB · Aufrufe: 20
Zurück