Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
WTF is das denn? Gibts da nich ne Intelligentere Methode? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
WTF is das denn? Gibts da nich ne Intelligentere Methode?


 
ArSeN
12-01-2007, 11:31 
 
Folgende Funktion:

function dv_picture_get_filename($bild_titel, $bild_endung) {
$result = dv_mysql_query("SELECT last_insert_id() as last FROM dv_bild");
$arr = mysql_fetch_assoc($result);
$id = $arr['last'];

echo "<br /><br />Input: $bild_titel.$bild_endung";

$titel = $bild_titel;
$endung = $bild_endung;

// Umlaute ersetzen und ID anhängen
$titel = str_replace("ä","ae",$titel);
$titel = str_replace("ö","oe",$titel);
$titel = str_replace("ü","ue",$titel);

$titel = str_replace("Ä","AE",$titel);
$titel = str_replace("Ö","OE",$titel);
$titel = str_replace("Ü","UE",$titel);

$titel = str_replace("ß","ss",$titel);

$titel = str_replace(" ","_",$titel);

echo "<br />Output: $titel" ."_". "$id.$endung";

return $titel . "_$id." . $endung;
}

Bevor mich jemand anmeckert: Ja, ich weiß, str_replace aktzeptiert auch Arrays. Ich hab das auseinandergefriemelt um den Fehler zu finden.

Also. Sofern ich die Funktion direkt im Quelltext aufrufe, mit z.B.

echo dv_picture_get_filename("Hallo jürgen hüöäö","png");

funktioniert das ganze einwandfrei. Wenn ich allerdings Daten aus einem Formluar nehme, werden du Umlaute plötzlich nichtmer erkannt bzw. ersetzt, sondern nur noch das Leerzeichen. Jetzt habe ich mir aus dem Dateinamen da wo das ö stehen sollte mal den Teil "ö" kopiert, und schon wird das ganze wieder erkannt, aber das kann doch nicht wirklich so gedacht sein?!

Mir ist inzwischen klargeworden, dass das ganze wohl am UTF-8 zu liegen hat, dennich würde ich gerne wissen, ob jemand ne intelligentere Methode zur hand hat, um den Kram da umzuwandeln. Jemand ne Idee? Wäre sehr dankbar! :)

 
TobiaZ
12-01-2007, 11:39 
 
also du sendest die daten UTF 8?

dann ist doch klar, dass du die Zeichen auch so angeben musst, wie sie der Funktion auch mitgegeben werden. ansonsten kann str_replace auch nicht matchen würde ich sagen.

 
ArSeN
12-01-2007, 11:41 
 
Ja so dachte ich mir das jetzt auch, als ich mal drauf gekommen bin das der DocType von meinem xHTML ein UTF-8 Charset verwendet.

Aber gibts keine andere Möglichkeit als da jetzt diese komischen kryptischen Zeichen zum ersetzen zu benutzen? Gibts nicht wenigstens irgendwelche Standardisierten Codes oderso? :D

 
TobiaZ
12-01-2007, 11:53 
 
willkommen in der Welt der Zeichensätze. ;)

Aber mal ehrlich, du hast dem XHTML Dokument doch nicht völlig willkürlich ne utf8 gegeben?
außerdem schreibst du dort die Umlaute doch auch nicht "im klartext" in den quelltext sondern entsprechend als utf 8.

 
ArSeN
12-01-2007, 11:58 
 
Ehm ja, danke für das Willkommen :P

Das ist auch sehr passend, denn so wirklich Plan hab ich nicht, was davon Sinn macht und was nicht, daher weiß ich nicht genau ob das UTF-8 jetzt ne Fehlentscheidung war. In meinem xHTML-Dokument verwende ich &ouml; & Co. aber die erkennt str_replace auch nicht, wäre auch zu schön gewesen :D

Also gehts wirklich nicht anders? Find ich zwar etwas merkwürdig aber dann werd ichs wohl so machen. Danke!

 
TobiaZ
12-01-2007, 12:03 
 
benutzt du für html und php den gleichen editor

oder kann es sein, dass dein html editor die datei im utf speichert, dir aber entsprechend die Zeichen "normal" anzeigt,
wogegen deine PHP Umgebung das nicht üterstützt?

 
ArSeN
12-01-2007, 17:30 
 
Ich benutze denselben Editor (Zend Studio) und gebe eigentlich sämtliches HTML via PHP aus. Das mein Dokument UTF-8 ist meine ich so:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >

Das die Daten im aus den Formularen im UTF-8 charset kommen, liegt denke ich daran. Oder irre ich?

 
wahsaga
12-01-2007, 17:38 
 
Original geschrieben von ArSeN
Das die Daten im aus den Formularen im UTF-8 charset kommen, liegt denke ich daran. Oder irre ich?
Liegt höchstens daran, wenn die vorgelagerte Stelle (HTTP-Header) nichts zur Zeichenkodierung aussagt.

Und enctype im Formular ist auch noch eine relevante Stelle, wenn's dann ans Versenden der Daten geht.


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:11 Uhr.