Jede Zeile in Array speichern

Sasser

Erfahrenes Mitglied
Hallo Leute!

Wie speichert man jede Zeile einer Textdatei in ein Array?

Ich hab so angefangen, aber er liest sie nicht aus:

PHP:
$blackwords = array();
foreach (file("blackwords.txt") as $blackword)
{
array_push($blackwords, $blackword);
}
$message = str_ireplace($blackwords, "***", "$message");
$time = date("H:i");
$db = connect_db();
$result = mysql_query("INSERT INTO chat (user, message, time) VALUES ('".$user."','".$message."','".$time."')", $db);
mysql_close($db);
 
Wie kann das sein? Die Textdatei wird ausgelesen und in einem Array gespeichert, nur ersetzt er die falschen Wörter nicht!

PHP:
$message = "Hallo das ist ein Test!";

$blackwords = array();
$blackwords = file("blackwords.txt");

$message = str_ireplace($blackwords, "***", "$message");

echo $message;
 
Wende auf jedes Element deines Blackword-Arrays noch trim() an, dann klappts!
(Grund: Zeilenumbruchszeichen, file() behält die bei)

MfG
 
Hi Sasser.

Hab mir auch ne riesige Badwordlist angelegt. Über 7000 Zeilen :suspekt: Glaub da muss noch bisken was raus. Selbst so Wörter wie "Affe" stehen drin. Tz.

Aber hatte das selbe Problem wie du und habs so gelöst, dass ich die Datei nur mit "\n" am Zeilenende erstellt hab und dann:
PHP:
$s = file_get_content($s);
$a = explode("\n", $s);
Da brauchs keine Schleife die jedes Element einzeln durchgeht, weil explode die "\n" schon löscht.
Zur Not musst den Wagenrücklauf mitnehmen: explode("\r\n", $s);

EDIT:
Oder Sorglos-Lösung (aber auch langsamer):
PHP:
$a = preg_split("/\r\n|\r|\n/", $s);
 
Zuletzt bearbeitet:
Hmm naja ich glaub ich werde die wieder in eine Datenbank legen und abrufen und in einem Array speicherm.

Fand ich bisher am einfachsten und hat auch ohne Probleme funktioniert! Ist übrigens dür einen Chat gedacht ;)
 
Wie kann das sein? Die Textdatei wird ausgelesen und in einem Array gespeichert, nur ersetzt er die falschen Wörter nicht!

Kann man der Funktion überhaupt ein Array als "Suchmuster" übergeben? Ich glaube du musst in einer Schleife die Zeilen durchgehen.

PHP:
$message = "Hallo das ist ein Test!";

$blackwords = array();
$blackwords = file("blackwords.txt");
foreach($blackwords as $blackword) {
       $message = str_ireplace($blackword, "***", "$message");
}
echo $message;
 
[phpf]str_ireplace[/phpf]

mixed str_ireplace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

Also, ja, es geht ein Array, hättest du aber auch einfach selber kontrollieren können, im Manual.
 
Zurück