zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Php Funktionen Umlaute entfernen

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 22.09.2015, 08:10
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 13.12.2014
Beiträge: 137
Nördy kann nur auf Besserung hoffen
Standard Php Funktionen Umlaute entfernen

Hallo Leute,
In der Schule haben wir seit ca einem Monat Funktionen in PHP und da haben wir folgendes geschrieben:
Link

HTML-Code:
<html>
	<head>
		<title>Cesar</title>
		<meta http-equiv="refresh" content="30">
		<meta charset="utf-8">
	</head>	
	<body>
		<form action="./index.php" method="POST">
			Text:<input type="text" name="text" required="required"><br/>
			Zahl:<input type="text" name="zahl" required="required"><br/>
			
			<input type="submit" value="Senden">
			<input type="reset" value="Abbrechen">
		</form>
	</body>
</html>
PHP-Code:
<html>
<head>
<title>Verschluesseln</title>
    <meta http-equiv="refresh" content="100">
    <meta charset="utf-8">
</head>
<body>
<div id="back" onClick="history.back()">ZURÜCK</div>
<?php    
    $text 
$_POST["text"];
    
$zahl $_POST["zahl"];
    
$i=0;    

    
//in Grossbuchstaben
function inGrossbuchstaben($text) {
        
$i=0;
    while(
$i<strlen($text)){
            
            if((
$text[$i]>="a") && ($text[$i]<="z")){
                
$text[$i]=chr(ord($text[$i])-32);
            }
            
$i++;
                
    }
    return 
$text;
}


//ohne Leerzeichen
function leerzeichenEntfernen($text) {
        
$i=0;
    while(
$i<strlen($text)){
        
            if(
ord($text[$i])=="32"){
                
$text[$i]="";
            }
            
$i++;
    }
    return 
$text;
}



//Zahl in Wort
function zahlinbuchstabe($text) {
        
$i=0;
        
$ergebnis "";
    while(
$i<strlen($text)){

            
                switch(
$text[$i]){
                    case 
'0' $ergebnis $ergebnis "NULL"; break;
                    case 
'1' $ergebnis $ergebnis "EINS"; break;
                    case 
'2' $ergebnis $ergebnis "ZWEI"; break;
                    case 
'3' $ergebnis $ergebnis "DREI"; break;
                    case 
'4' $ergebnis $ergebnis "VIER"; break;
                    case 
'5' $ergebnis $ergebnis "FUENF"; break;
                    case 
'6' $ergebnis $ergebnis "SECHS"; break;
                    case 
'7' $ergebnis $ergebnis "SIEBEN"; break;
                    case 
'8' $ergebnis $ergebnis "ACHT"; break;
                    case 
'9' $ergebnis $ergebnis "NEUN"; break;
                    default  : 
$ergebnis $ergebnis $text[$i];
                }
        
$i++;
    }
    return 
$ergebnis;
}

//Sonderzeichen
function sonder_zeichen($text){
    
$i=0;
    
$ergebnis "";
        while(
$i<strlen($text)){
            if((
ord($text[$i])<=65) || (ord($text[$i])>=90)){
                
$ergebnis=$ergebnis "";
            }
            else{
                
$ergebnis=$ergebnis $text[$i];
            }
            
$i++;
        }
    return 
$ergebnis;
}

    
function 
umlauteentfernen($text) {
        
$i=0;
        
$ergebnis "";
    while(
$i<strlen($text)){

            
                switch(
$text[$i]){
                    case 
'Ä' $ergebnis $ergebnis "AE"; break;
                    case 
'Ö' $ergebnis $ergebnis "OE"; break;
                    case 
'Ü' $ergebnis $ergebnis "UE"; break;
                    case 
'ß' $ergebnis $ergebnis "SS"; break;
                    default  : 
$ergebnis $ergebnis $text[$i];
                }
        
$i++;
    }
    return 
$ergebnis;
}

                    
//verschluesselt
function verschieben($text$zahl)
{
    
$ergebnis "";
    
$i=0;
    while (
$i<strlen($text))
    {
        if (
ord($text[$i])+$zahl>90)
            
$ergebnis $ergebnis chr(ord($text[$i])+$zahl-26);
        else if (
ord($text[$i])+$zahl<65)
            
$ergebnis $ergebnis chr(ord($text[$i])+$zahl+26);
        else
            
$ergebnis $ergebnis chr(ord($text[$i])+$zahl);
         
$i=$i+1;
    }
    return 
$ergebnis;
}

/* ..                    .. */


echo "<br/>Originaltext: " $text ."<br />";


$gross inGrossbuchstaben($text);

echo 
"In Grossbuchstaben: " .$gross ."<br/>";


$ohneleer leerzeichenEntfernen($gross);

echo
"ohne Leerzeichen: ".$ohneleer."<br/>";


$last=zahlinbuchstabe($ohneleer);

echo 
"Zahlen in Wörter: ".$last."<br/>";


$umlaute=umlauteentfernen($last);

echo 
"Umlaute entfernen: ".$umlaute."<br/>";


$sonderzeichen=sonder_zeichen($umlaute);

echo
"Ohne Sonderzeichen: "$sonderzeichen."<br/>";


$verschluesselt=verschieben($sonderzeichen$zahl);

echo 
"und Verschlüsselt: " $verschluesselt  ."<br /><br/>";

?>

    
</body>
</html>
Das Programm klappt soweit auch aber das was nicht funktioniert ist das "ä ö ü ß" in "ae oe ue ss" umgewandelt werden. Also die Funktion in Zeile 87 bis 103.
Der Rest der Funktion(en) klappt super.

Könnt ihr mir helfen und sagen was an der funktion "umlauteentfernen" falsch ist?

MFG Daniel
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 22.09.2015, 08:46
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Schau mal, mit welcher Kodierung die Seite angezeigt wird, die Angabe im HTML Header ist nur zweitrangig, der HTTP Header hat Vorzug. Du siehst das, wenn du z.b. im Firefox im Kontextmenü die die Seiteninformation anzeigen lässt.

Zu dem Code: ich nehme an das ist nur zur Übung, weil die meisten Funktionen sind absolut überflüssig und es gibt entsprechende builtin Funktionen.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 23.09.2015, 22:01
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 13.12.2014
Beiträge: 137
Nördy kann nur auf Besserung hoffen
Standard

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
Zu dem Code: ich nehme an das ist nur zur Übung
Ja das ist nur zur Übung. Eigentlich war das unsere Aufgabe in der Schule aber unser Lehrer hat uns das am Ende wieso auch immer doch nicht mehr gezeigt und jetzt ist das eine freiwillige Extraaufgabe.

Entschuldigung, aber kannst du mir den oben Teil den du geschrieben hast nochmal genauer erklären und wie ich was machen muss? Tut mir leid ich bin noch nicht so erfahren...
Mit Zitat antworten
  #4 (permalink)  
Alt 23.09.2015, 23:22
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 745
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Rechtsklick in die Seite, „View Page Info“ und dann der Wert von „Text Encoding“.

- http://www.ld-host.de/uploads/images...caecdc74d1.png

Dein Code geht von einem Single-Byte-Charset wie Windows-1252 aus. Er funktioniert in der Form nur, wenn die Quellcode-Datei in diesem Charset gespeichert wird (Editoreinstellung) und wenn die Seite mit diesem Charset ausgeliefert wird.

Letzteres ist durch ein Setzen des HTTP-Headers via PHP zu erreichen. Das muss aber vor der Ausgabe passieren. Zum Beispiel so:

PHP-Code:
<?php
header
('Content-Type: text/html; charset=Windows-1252';)
?><html>
...
Der Vollständigkeit halber: Heutzutage ist die beste Charset-Wahl in der Regel UTF-8. Das ist allerdings ein Multi-Byte-Charset. Das heißt, dass nicht jedes Zeichen mit genau einem Byte kodiert ist. Deshalb kann das Charset aber auch mehr als 256 verschiedene Zeichen kodieren, ohne auf HTML-Entities ausweichen zu müssen.

Jedenfalls funktioniert so eine Schleife…

PHP-Code:
while($i<strlen($text)){
    
// Mache irgendwas mit $text[$i]
    
$i++;

…nur mit Single-Byte-Charsets, weil nur dort jedes Zeichen genau ein Byte lang ist.
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
modrewrite php query entfernen? sepp88 Serveradministration und serverseitige Scripte 10 28.07.2010 11:51
PHP: Filter Funktionen Pablo Ressourcen 2 03.11.2009 19:21
PHP Rss Feeder zeigt keine umlaute an kubapl Serveradministration und serverseitige Scripte 6 07.05.2008 20:18
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 19:09
Tool zum schnellen Ausführen von PHP Funktionen Floele Ressourcen 0 16.07.2007 18:55


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:13 Uhr.