str_replace funktioniert nur auf dem Webserver, nicht auf |
phpnoob
Pixelschubser Threadstarter
Beiträge: 7 |
Hallo zusammen, ich programmiere gerade an einem eigenen Gästebuch-Skript, soweit funktioniert ja auch alles, nur beim ersetzen der Badwords mit str_replace gibt's auf meinem lokalen Rechner probleme, auf dem Webserver funktioniert alles prima.
Was auch komisch ist, es wird keine Fehlermeldung angezeigt, obwohl ich diese in der php.ini aktiviert habe, er ersetzt die Badwords einfach nicht. :(
Naja, vielleicht kommt einer von euch auf die Lösung des Problems, hier auf jeden Fall mal der Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17: | $zensur = "******";
function badword( $message, $set_path, $zensur )
{
$file = $set_path . "badword.dat";
if( is_file( $file ) )
{
$fsize = ( filesize( $file ) + 1 );
$fp = fopen( $file, "r" );
$file_cont = fread( $fp, $fsize );
$words = explode( "\n", $file_cont );
fclose( $fp );
}
$message = str_replace( $words, "$zensur", $message) ;
return $message;
} |
Was vielleicht etwas zu sagen hat ist, auf meinem Webserver läuft PHP in Version 4.2.1, zuhause habe ich Version 4.3.1. Kann es sein, das str_replace in dieser Art in der neueren Version nicht mehr funktioniert? *hhhhhmmmmm*
Naja, ich hoffe mal einer von Euch weiß was!
Danke schon mal!
Ciao
phpnoob
Diese Nachricht wurde geändert von: phpnoob |
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
also an str_replace() wirds nciht liegen. Wenn überhaupt an den file-Funktionen. Guck mal auf www.php.net nach, wie die sich in welcher Version verhalten.
|
 Profil
Editieren
Zitieren
|
phpnoob
Pixelschubser Threadstarter
Beiträge: 7 |
@ languitar
Also an file() usw. kann's eigentlich auch nicht liegen, denn ich benutze folgenden Code in einem Bilder-Galerie-Skript von mir, um dort den jeweiligen Text zum Bild auszulesen und dort funktioniert es ja auch online und offline wunderbar. :-?
1:
2:
3:
4:
5:
6:
7:
8: | if( is_file( $file ) )
{
$fsize = ( filesize( $file ) + 1 );
$fp = fopen( $file, "r" );
$file_cont = fread( $fp, $fsize );
$txt = explode( "||||||", $file_cont );
fclose( $fp );
} |
Die einzigen Unterschiede der beiden Codes sind folgende:
1. Der Code im GB wird in einer "Funktion" aufgerufen, der in der Gallery nicht.
2. im GB benutze ich "\n" und in der Gallery "||||||" bei "explode()".
Am "\n" bzw. "||||||" kann's allerdings nicht liegen, dass hab ich schon ausprobiert.
Auf php.net hab ich mich in der Function-List auch mal umgesehen, konnte aber nirgendwo erkennen das was mit meinem Code nicht stimmt!
Sollte EIGENTLICH so funktionieren. :|
Ich hoffe mal auf weitere Hilfe!
Ciao
phpnoob
Diese Nachricht wurde geändert von: phpnoob |
 Profil
Editieren
Zitieren
|
Philipp Gérard
Foren-Team
Beiträge: 1502 |
str_replace is nix für arrays.
1: | $output = ststr($input,$array); |
---
Arbeit ist das Feuer der Gestaltung. - Marx
Diese Nachricht wurde geändert von: Philipp Gérard |
 Profil
E-Mail
Website
Editieren
Zitieren
|
phpnoob
Pixelschubser Threadstarter
Beiträge: 7 |
@ Philipp Gérard
str_replace is nix für arrays. |
Sorry, das ich dich da revidieren muß.
Ich hab's jetzt hinbekommen, auch mit dem array.
@ alle die es interessiert
Also, wie gerade schon gesagt, ich hab's hinbekommen.
Es lag doch an dem "\n" bei explode().
Ich hab das "\n" jetzt durch ein "#" ersetzt und hab die Datei badword.dat danach angepasst und siehe da, es funktioniert! :p
Ich hab zwar keine Ahnung warum es beim ersten mal nich geklappt hat, aber naja.
Das mit dem "\n" liegt aber wohl an meinem Rechner zuhause, auf dem Apache unter Windoof läuft und mein Server benutzt Linux als OS. Irgendwie scheint Windoof in dieser Konstellation mit dem "\n" nicht klar zu kommen. :/
Windoof halt! *grrrrr*
So, das wär's, Problem gelöst. Vielen dank für Eure Hilfe!
Gruß
phpnoob
|
 Profil
Editieren
Zitieren
|
Andreas S
Otto-Normal-Poster
Beiträge: 81 |
Hallo,
du musst unter Windows \r\n statt \n nehmen (geht dann auch aufm Server selbst).
|
 Profil
Editieren
Zitieren
|
phpnoob
Pixelschubser Threadstarter
Beiträge: 7 |
@ Andreas S
Vielen Dank, werd ich so bald wie möglich probieren.
Wäre nämlich schon klasse wenn's mit "\n" bzw. "\r\n" funktionieren würde, dann sieht die Datei badword.dat nicht aus wie Kraut und Rüben!
Wenn ich's probiert hab, werde ich berichten.
Gruß
phpnoob
|
 Profil
Editieren
Zitieren
|
Philipp Gérard
Foren-Team
Beiträge: 1502 |
Seit PHP 4.0.5 kann jeder Parameter von str_replace() auch ein Array sein. |
Lesen müsst man können . Das kommt davon, dass man seit 3 rumspielt... *g*
---
Arbeit ist das Feuer der Gestaltung. - Marx
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
Can
Halbgott
Beiträge: 1324 |
Macht \r\n unter Unix dann keine Probleme? Dachte ich hätt' das mal erlebt, kann mich aber auch irren.
Philipp Gérard schrieb am 11.12.2003 18:11
Seit PHP 4.0.5 kann jeder Parameter von str_replace() auch ein Array sein. |
Lesen müsst man können . Das kommt davon, dass man seit 3 rumspielt... *g* |
CS-Kiddy!!!
---
" S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox
|
 Profil
E-Mail
Editieren
Zitieren
|
Philipp Gérard
Foren-Team
Beiträge: 1502 |
Ich meinte PHP3 du Analphabet!
---
Arbeit ist das Feuer der Gestaltung. - Marx
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
Can
Halbgott
Beiträge: 1324 |
PHP ist nicht zum Spielen da :P
---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox
|
 Profil
E-Mail
Editieren
Zitieren
|
phpnoob
Pixelschubser Threadstarter
Beiträge: 7 |
Hallo miteinander,
also, ich hab's jetzt noch mal mit "\r\n" probiert und bin zu folgendem Ergebnis gekommen:
Unter Windoof funktioniert "\r\n" wunderbar, Linux auf dem Webserver hat damit allerdings so seine Problemchen und ersetzt die Badwords dann einfach nicht. :/
Naja, egal wenigstens kann ich heute Nacht wieder gut schlafen, da das Problem jetzt behoben ist. Wenn ich das Skript offline benutze werd ich's halt mit "\r\n" tun, auf dem Server wird halt auf "\n" umgestellt.
Vielen Dank noch mal allen Beteiligten, vor allem @ Andreas S für den tollen Tipp!
Gruß
phpnoob
|
 Profil
Editieren
Zitieren
|