PHP *confused* require_once

asseskiller

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
447
hi leute
hab folgende funktion in der functions.contact.php geschrieben:
PHP:
function cleanForSpecialChars($string)
	{
	$string = str_replace("ä", "ae", $string);
	$string = str_replace("Ä", "Ae", $string);
	$string = str_replace("ö", "oe", $string);
	$string = str_replace("Ö", "Oe", $string);
	$string = str_replace("ü", "ue", $string);
	$string = str_replace("Ü", "Ue", $string);
	$string = str_replace("é", "e", $string);
	$string = str_replace("É", "E", $string);
	$string = str_replace("á", "a", $string);
	$string = str_replace("Á", "A", $string);
	return $string;
	}

diese hab ich so in das script eingebunden

PHP:
require_once('functions.contact.php');
echo cleanForSpecialChars('Jörg');

Ausgabe ist
Code:
Jörg

wenn ich die function aber in der contact.php direkt deklariere geht es:

PHP:
function cleanForSpecialChars($string)
	{
	$string = str_replace("ä", "ae", $string);
	$string = str_replace("Ä", "Ae", $string);
	$string = str_replace("ö", "oe", $string);
	$string = str_replace("Ö", "Oe", $string);
	$string = str_replace("ü", "ue", $string);
	$string = str_replace("Ü", "Ue", $string);
	$string = str_replace("é", "e", $string);
	$string = str_replace("É", "E", $string);
	$string = str_replace("á", "a", $string);
	$string = str_replace("Á", "A", $string);
	return $string;
	}

echo cleanForSpecialChars('Jörg');

Ausgabe

Code:
Joerg
Woran liegt sowas?:freak::freak::freak:
 
Zuletzt bearbeitet:
Haben beide Dateien den gleichen Zeichensatz/Kodierung?
 
woran erkenne ich das?

Also in der Contact php steht mit drinne:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

aber die functions geht direkt mit "<?" los und endet mit "?>" und dazwischen stehen nur funktionsdeklarationen
 
nich die Kodierung der webseite, die kodierung der dateien.

wenn ich mit meinem editor (notepad++) ne datei öffne (zb. functions.contact.php ) öffne steht unten rechts zb.

UTF-8 ohne BOM

die kodierung muss bei dir im quelltext überall gleich sein.
 
bei functions.contact.php steht ANSI und bei der contact.php ANSI as UTF-8

liegt da der fehler?
und wie ändere ich das?
 
Öffne die functions.contact.php gehe bei notepad++ auf Format wähle dort UTF-8 ohne BOM aus und speicher es ab. Zudem würd ich danach alle deine sonderzeichen im quellcode durchgucken ;).

Unter Einstellungen -> Einstellungen -> Neues Dokument stellste am besten noch ein das alle automatisch mit UTF-8 ohne BOM sind.
 
ps: str_replace kann auch mit arrays umgehen

$suchen= array("ä", "ü", "ö");
$ersetzen=array("ae", "ue", "oe");

$string = str_replace ($suchen , $ersetzen , $string);

Musst nur drauf achten das die reihenfolge in beiden arrays gleich ist.
 
Also folgendes:

Ich habe diese Scripte auf dem MoWeS Portable II laufen (chsoftware.net) laufen. (Vielleicht kennt jemand den Vorgänger WOS)

Habe beide datein mit Notepad++ geöffnet und Format geändert.
Das Script funktionierte nach wie vor nicht. Nach dem schließen und wieder öffnen des Notepads++ zeigte Notepad bei den Dateien ANSI als format an.

Woran liegt das?

Meine funktion sieht nun übrigens so aus:

PHP:
function cleanForSpecialChars($string)
	{
	$suchen= array("ä", "ü", "ö", 'Ä', 'Ö', 'Ü', 'é', 'É', '€', '$');
	$ersetzen=array("ae", "ue", "oe", 'Ae', 'Oe', 'Ue', 'e', 'E', 'EURO', 'Dollar');
	$string = str_replace ($suchen , $ersetzen , $string);
	return $string;
	}
 
kann mir denn keiner helfen?
 
1. Speicher deine Dateien als UTF8, beide!!!!! Am besten du überprüft es mit notepad++.
2. Erzwinge, dass die Daten als UTF8 zum Client geschickt werden (header("content-type: text/html; charset=utf-8");)
3. Sorge dafür, dass im HTML der Zeichensatz ebenfalls genau angegeben wird (<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />)
 
Ich könnte dir noch anbieten das du mir die 2 dateien (reduziert mit dem quellcode den ich benötige) schickst und ich gucke mir das mal an. So auf die ferne ist es schwer zu sagen. Du könntest wie #11 sagt durch die header() angaben erzwingen das alles per utf-8 gesendet wird (das header muss aufgerufen werden bevor die erste zeile zum client gesendet wurde)
 
Zurück
Oben