php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.07.2005, 10:37  
Gast
 
Beiträge: n/a
Standard Umlaute in Dateien per CLI in HTML-Entities umwandeln

Hallo,

ich habe hier folgendes Problem: Ich habe hier HTML-Dateien, in denen Umlaute (ä,ü,ö) auch wirklich als Umlaute geschrieben sind und nicht als HTML-Entitiy (ä ü &ouml. Das wollte ich jetzt jetzt mit einem kleinen PHP-Script über das CLI eben korrigieren (Ich weiss, dass PHP dafür evtl nicht die optimalste Sprache ist, aber es ist die einzige, die ich soweit behersche ). Das Script läuft unter Windows XP und sieht so aus:

PHP-Code:
<?php
function getEnding ($filename)
{
    if (
substr ($filename01) == ".")
    {
        
$filename = (substr ($filename1strlen($filename)));
    }
    
$endingcopy=$filename;
    
$ending stristr ($filename".");
    if (
$ending != "")
    {
        
$ending getEnding ($ending);
    }
    else
    {
        
$ending=$endingcopy;
    }
    return 
$ending;
}

$handle=opendir ("d:\\verzeichnis");
while (
$file readdir ($handle))
{
    if (
$file != "." && $file != "..")
    {
        
$ending getEnding($file);
        if (
$ending == "shtml")
        {
            
$filehandlerread fopen ("d:\\verzeichnis\\" $file"rb");
            
$filehandlerwrite fopen ("d:\\verzeichnisneu\\" $file"ab");
            while (!
feof($filehandlerread))
            {
                
$line fgets ($filehandlerread);
                echo 
$line " -> ";
                
$line str_replace ("ä""&auml;"$line);
                
$line str_replace ("ö""&ouml;"$line);
                
$line str_replace ("ü""&uuml;"$line);
                
$line str_replace ("Ä""&Auml;"$line);
                
$line str_replace ("Ö""&Ouml;"$line);
                
$line str_replace ("Ü""&Uuml;"$line);
                echo 
$line "\n";
                
fputs $filehandlerwrite$line);
            }
            
fclose ($filehandlerread);
            
fclose ($filehandlerwrite);
        }
    }
}
closedir($handle);
?>
Die Funktion getEnding() liefert die Dateiendung der aktuellen Datei zurück, dann wird der Inhalt aller .shtml-Dateien zeilenweise eingelesen, die Umlaute sollten eigentlich ersetzt werden und die Dateien werden wieder zeilenweise in ein neues Verzeichnis geschrieben.

Das ganze funktioniert aber irgendwie wegen der Kodierung nicht, wenn ich mir die Ausgabe auf der Kommandozeile ansehe, werden statt ä ö ü auch andere grafische Zeichen ausgegeben und deswegen werden die Zeichen durch str_replace auch nicht gefunden.

Kann mir jemand sagen, wie ich dieses Problem lösen kann? Ich habe es schon über htmlentities() und recode_string() probiert, wobei die erste Funktion keine Lösung brachte und die zweite ein "call to undefined function" brachte.
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.07.2005, 10:51  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

hilft dir das vieleicht weiter:
dann vieleicht mit UTF-8 arbeiten und du hast keine probleme mehr mit sonderzeichen

http://www.php.net/manual/en/functio...ity-decode.php
robo47 ist offline   Mit Zitat antworten
Alt 18.07.2005, 11:13  
Gast
 
Beiträge: n/a
Standard

Ich kann Die irgendwie nicht so ganz folgen, was ich jetzt damit machen soll, ich habe jetzt mal folgendes versucht:

Ich habe
PHP-Code:
<?php
$line 
str_replace (ä"&auml;"$line);
?>
durch
PHP-Code:
<?php
$line 
str_replace (html_entity_decode ("&auml;"), "&auml;"$line);
?>
ersetzt, weitergeholfen hat mir das aber auch nicht... Ich weiss auch nicht, ob das das war, was Du wolltest.

Edit: Das Zeichen, das durch (html_entity_decode ("&auml;") ausgegeben wird, sieht auch anders aus als das Zeichen, das aus der Variablen $line ausgegeben wird.
  Mit Zitat antworten
Alt 18.07.2005, 11:26  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

less dir halt mal durch was die funktion macht und dann lass sie einmal über den kompletten quelltext laufen, das sollte alle maskierten zeichen umwandeln in das normale.

die frage die sich stellt, als was sind die dateien gespeichert ? normale iso-8858-standard-zeugs oder vieleicht utf-8 ?

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 18.07.2005, 11:47  
Gast
 
Beiträge: n/a
Standard

Ich weiss, was die Funktion macht, aber ich will es doch umgekehrt, dass die normalen Zeichen in die maskierten umgewandelt werden.

Ich bin bisher davon ausgegangen, dass die Dateien UTF-8 codiert sind, aber vereinzelt sind auch ANSI codierte dabei. Aber wenn es mit UTF-8 schonmal klappen würde, wäre ich schonmal einen großen Schritt weiter.
  Mit Zitat antworten
Alt 19.07.2005, 09:06  
Gast
 
Beiträge: n/a
Standard

Ich habe das Problem jetzt gelöst, indem ich den Standard Charset des Webservers geändert habe. Jetzt zeigt er die UTF-8 Dateien korrekt an.
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] script das html dateien aus einem bestimmten ordner listet PHP Tipps 2004 16 09.05.2009 18:52
Variabeln in html dateien Umwandeln CA$HMIRE PHP Tipps 2008 10 02.05.2008 19:02
nur erlaubte html tags umwandeln PHP Tipps 2006 2 30.10.2006 13:53
HTML Zeichen in einem bestehendem XML Dokument umwandeln PHP Tipps 2006 33 24.03.2006 17:33
Formulartexte HTML - kompatibel umwandeln horstenpeter PHP Tipps 2006 6 22.02.2006 16:43
Include - Wie HTML Dateien einbinden? PHP Tipps 2005-2 2 13.10.2005 23:33
Ergebnis einer DBabfrage in HTML Dateien Suchen u. anzeigen PHP Tipps 2005-2 0 15.08.2005 22:35
[Erledigt] XML mit simplexml und xpath in HTML umwandeln PHP-Fortgeschrittene 3 15.07.2005 01:39
Dateien mit HTML einbinden ggfan HTML, Usability und Barrierefreiheit 3 21.06.2005 16:21
Umlaute in HTML - konforme Form umwandeln Stümper PHP Tipps 2005 19 30.05.2005 08:42
PDF in html umwandeln JEGO PHP Tipps 2005 2 12.04.2005 15:10
Komprimierte HTML Dateien mit PHP MadCro PHP-Fortgeschrittene 6 28.10.2004 16:45
Problem mit htm bzw. html Dateien Server, Hosting und Workstations 7 15.10.2004 20:27
PDF zu HTML umwandeln (serverseitig) PHP Tipps 2004 8 16.08.2004 17:10
Wie kann ich eine PHP Datei in eine HTML Datei umwandeln PHP Tipps 2004 2 12.08.2004 18:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
javascript htmlentities decode, php umlaute htmlentities, html_entity_decode umlaute, php htmlentities umlaute, http://www.php.de/php-fortgeschrittene/26957-erledigt-umlaute-dateien-per-cli-html-entities-umwandeln.html, php umlaute in entities umwandeln, umlaute php umwandeln, php cli umlaute, htmlentities umlaute, umlaute html umwandeln, php htmlentities umlaute codierung, htmlentities javascript, umlaute in html entities umwandeln php, umlaute umwandeln php htmlentities, php ä in &auml; umwandeln, script umlaute umwandeln, html_entity_decode &auml;, php umlaute iso dateiname htmlentities, php windows 7 cli umlaute, php umlaute zu html

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:59 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.