MySQL-Variable in php-Funktion

BlackBard

BlackBard

Verpeilter Vielfraß
Hallo, ich habe folgendes Problem:
Ich will in einer aus einer MySQL-Datenbank ausgelesene Variable (bzw. per while mehrere hintereinander) durch eine Funktion Umlaute durch die Umschreibungen in RTF austauschen. Wenn ich die Variable ($nachname) ohne MySQL (und die while-Schleife) fülle funktioniert alles wunderbar, wenn ich sie aus der Datenbank auslese tut die Funktion nichts und gibt mir nur die Originale aus der Datenbank zurück. Was mache ich falsch?

Code:
//Umlaute durch Umschreibungen von RTF ersetzen
function umlaute($text)
{
$search  = array ('ä', 'ö', 'ü', 'ß', 'Ä', 'Ö', 'Ü');
$replace = array ('\\\'e4', '\\\'f6', '\\\'fc', '\\\'df', '\\\'c4', '\\\'d6', '\\\'dc');
$str  = str_replace($search, $replace, $text);
return $str;
}

$nachname = "Hallö ein Ümlauttäst";
echo umlaute($nachname);


echo "<br><br>";


// Alle Daten der VV $vvnr aus der Datenbank holen
$res = mysql_query("SELECT * FROM anmeldung WHERE vv='" . $vvnr . "'");
while ($row = mysql_fetch_array($res)){
extract ($row);

echo umlaute($nachname);
}
?>

Die Ausgabe ist dann
Code:
Hall\'f6 ein \'dcmlautt\'e4st

KrügerMeierMüllerÖzdemirSchulz
 
sind in der SQL auch wirklich die Sonderzeichen als solche drinne oder sind se dort als HTML-Sonderzeichen drinne, also sowas wie &uuml; oder &auml;

Schalt am Anfang deines Scriptes auch mal error_reporting(E_ALL); ein um weitere Fehler ausfindig zu machen.
 
Die Umlaute sind so in der DB drin (zumindest werden sie auch im html-Quellcode als Umlaute angezeigt und auch in phpMyAdmin als solche ausgegeben (auch in dessen Quelltext)).
Das error_reporting(E_ALL); änderte leider auch nichts an der Augabe.
 
Wenn ich fragen darf: wieso benutzt du dafür nicht die von mysql vorgesehenen Funktionen?
 
Zuletzt bearbeitet:
ich denke, das Problem liegt am Zeichensatz. Die PHP Datei hat einen anderen Zeichensatz wie die Daten in der MySQL Tabelle.

Ein ö in utf-8 wird nicht erkannt wenn du nach einem ö in latin1 (oder was auch immer) suchst.
 
Danke für Eure Hilfe und Denkanstöße!

@countryking: Vermutlich weil ich sie nicht kenne... :O

Es war tatsächlich ein Zeichensatzproblem. Jetzt funktioniert die Funktion wunderbar, dafür macht mir das RTF jetzt Probleme. Ich bekomme die Umlaute tatsächlich ausgetauscht, nur kommen (an welcher Stelle auch immer [korrigiert OOo nicht-korrekte rtf-Dateien??]) zusätzliche Zeichen dazu und die Buchstaben nach dem Umlaut werden dadurch verschluckt. :think:
 
du suchst replace(), wobei ich dein 2. Problem nicht mehr verstehe ;)
 
replace() hatte ich nach countrykingsfrage auch noch gefunden. Das zweite Problem ist, wie ich nach langer Recherche rausgefunden habe, ein Problem der rtf-Spezifikation, die so wie es ausschaut auf 7 Bit ausgelegt ist (was dazu führt, dass es bei Unicode-Zeichen rumzickt). Anbei garb es auch noch ein Script, das genau das macht was ich will:

http://forum.de.selfhtml.org/archiv/2008/3/t167583/

:D
 

Ähnliche Themen

Php mysql suchausgabe

Problem mit str_replace

CMS Problem [php]

UBB-Code in einem Array mit Hilfe einer Funktion ersetzen

Mysql connect Problem

Zurück
Oben