Problem mit Klasse

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Klasse

    Hallo,

    ich will mir eine kleine Klasse bauen die in einem String nach Umlauten sucht und ersetzt. Ich hab das so gelöst:

    PHP-Code:

    class string
    {
     var 
    $string;
      
     function 
    check_string($fldInhalt)
     {
      
    $this->string trim($fldInhalt);
      if(
    $this->string == '')
      {
       print 
    'ERROR: Alle Felder müssen ausgefüllt werden.<br />';
      } 
      else
      {
       
    $this->string str_replace('ä''&#xE4;'$this->string);
       
    $this->string str_replace('Ä''&#xC4;'$this->string);
       
    $this->string str_replace('ü''&#xFC;'$this->string);
       
    $this->string str_replace('Ü''&#xDC;'$this->string);
       
    $this->string str_replace('ö''&#xF6;'$this->string);
       
    $this->string str_replace('Ö''&#xD6;'$this->string);
       
    $this->string str_replace('ß''&#xDF;'$this->string);
       return 
    $this->string;
      }
     }

    Wenn ich sie nun aufrufe:

    PHP-Code:

    if(isset($_REQUEST['eintrag']) && $_REQUEST['eintrag'] == 'go')
    {
     
    $seitentitel = new string;
     
    $seitentitel $seitentitel->check_string($_REQUEST['seitentitel']);
     print 
    $seitentitel;

    erkennt sie zwar Leerfelder, ersetzt aber keine Umlaute.
    Was mache ich nur falsch?

    MfG
    Malaga

  • #2
    Hm ... verstehe nicht was du meinst! Außerdem
    - du mußt kein $string in der Klasse deklarieren, um in der Fkt. verwenden zu können. Du kannst genauso gut mit lokalen Variablen in der Fkt. arbeiten.
    - du zerstörst dein Objekt, indem du $seitentitel = $seitentitel->... machst, weißt du das?

    Kommentar


    • #3
      Hallo,

      ich hab $this->string genommen weil ich die Klasse später erweitern will. z.Bsp. für email eingaben kontrollieren etc.

      ich hab jetzt etwas probiert und es so gemacht:

      PHP-Code:
      $seitentitel 'hühner';

      print 
      '-----> vor der klasse: '.$seitentitel.'<hr />';

      $titel = new string;

      print 
      '----->nach der klasse: '.$titel->check_string($seitentitel); 
      so läuft es wie gewünscht.
      ergebnis:
      ----> vor der klasse: hühner
      ----> nach der klasse huehner

      wenn ich es aber so mache:
      PHP-Code:
      $seitentitel $_REQUEST['seitentitel'];

      print 
      '-----> vor der klasse: '.$seitentitel.'<hr />';

      $titel = new string;

      print 
      '----->nach der klasse: '.$titel->check_string($seitentitel); 
      geht es nicht.
      ergebnis:
      ----> vor der klasse hühner
      ----> nach der klasse hühner

      ich versteh das einfach nicht. auf jeden fall danke erstmal.

      MfG
      Malaga
      EDIT:
      linebreak sponsored by asp2php. Bitte zukünftig selbst dafür sorgen, dass man beim lesen nicht scrollen muss
      Zuletzt geändert von asp2php; 22.11.2004, 13:11.

      Kommentar


      • #4
        kann es sein, dass in $_REQUEST['seitentitel'] statt ü &amp;uuml; steht?

        Kommentar


        • #5
          ja, ich hab aber zum testen ü und ue genommen.
          damit ich sehe ob es geht oder nicht.

          das komische ist, nehme ich z.bsp. $titel = 'hühner' geht es.
          nehme ich $titel = '$_REQUEST['titel'] geht es nicht. wobei in $_REQUEST auch hühner steht.

          mit print $_REQUEST wird auch hühner angezeigt, aber es wird nicht umgewandelt.

          ich hoffe du verstehst mich. ich weiss nicht wie ich dir es besser erklären kann.

          Kommentar


          • #6
            Original geschrieben von Malaga
            ja, ich hab aber zum testen ü und ue genommen.
            damit ich sehe ob es geht oder nicht.

            das komische ist, nehme ich z.bsp. $titel = 'hühner' geht es.
            nehme ich $titel = '$_REQUEST['titel'] geht es nicht. wobei in $_REQUEST auch hühner steht.

            mit print $_REQUEST wird auch hühner angezeigt, aber es wird nicht umgewandelt.

            ich hoffe du verstehst mich. ich weiss nicht wie ich dir es besser erklären kann.
            ganz einfacher ganz dummer Test.....

            schreib vor dem $titel = $_REQUEST['title'] ein
            $_REQUEST['titel'] = "Hühner";
            wenn es dann geht, ist was mit der Übertragung bei den Seiten kaputt, wenn es nicht geht.....weiß auch nicht....dann haste ein richtiges Problem XD


            btw. hat asp2php schon recht...deine Klasse ist ziemlich dumm
            theoretisch wäre es wesentlich besser für jede Überprüfung eine Funktion zu schreiben...dann kannst du sie nämlich auch einzeln in den Code schreiben usw.......Klassen sind zwar nett, aber nicht dafür, IMO hat das da keinen Sinn!

            noch ne Idee.....schreib mal statt $titel = $_REQUEST['title'];
            ein $title = html_entity_decode($_REQUEST['title']); und versuch es dann damit nochmal....wer weiß, vielleicht steht da ja doch was anderes als ü drin----anders kann ich mir das jetzt grade nicht erklären ¬_¬

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              hallo,


              schreib vor dem $titel = $_REQUEST['title'] ein
              $_REQUEST['titel'] = "Hühner";
              jo das geht.


              theoretisch wäre es wesentlich besser für jede Überprüfung eine Funktion zu schreiben...dann kannst du sie nämlich auch einzeln in den Code schreiben
              das hatte ich am anfang. nachdem ich aber nicht wusste wo der fehler liegt habe ich sie immer "kleiner" gemacht um den fehler zu finden.

              so nun werde ich mich um die übertragung bei den seiten kümmern, denn da ist der fehler.

              vielen dank für eure hilfe.

              mfg
              malaga

              Kommentar


              • #8
                Original geschrieben von Malaga
                das hatte ich am anfang. nachdem ich aber nicht wusste wo der fehler liegt habe ich sie immer "kleiner" gemacht um den fehler zu finden.
                So meinte ich das nicht...ich hab schon von einzelnen Funktionen geredet, nicht von Klassen-Funktionen.
                Es ist einfach, du hast einen String, bei dem du überprüfen willst, ob es eine E-Mail-Adresse ist, oder wo du die Umlaute ersetzten willst.
                Dafür lohnen sich einzelne Funktionen, weil du dann nicht für einen String, bei dem du die str_replaces's drüberlaufen lassen willst ein ganz neues Objekt anlegen musst....verstehst du?
                Es lohnt sich einfach nicht, dafür auf eine Klasse auszuweichen....naja, wenn du es so machen willst, lass ich dir den Spaß XD

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  ich verstehe dich.
                  ich hab vor 4 tagen angefangen mit oop und nun wollte ich einfach üben um damit arbeiten zu können. wann es lohnt und wann nicht hab ich jetzt dank dir verstanden.

                  mein problem war, eine fehlerhafte php installation unter linux. ich hab jetzt xampp von apachefriends installiert und nun läuft es.

                  besten dank für deine / eure hilfe.

                  mfg
                  malaga

                  Kommentar

                  Lädt...
                  X