Ankündigung

Einklappen
Keine Ankündigung bisher.

url translation & multidimensionales array & synthax i think....

Einklappen

Neue Werbung 2019

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

  • url translation & multidimensionales array & synthax i think....

    Hi,

    ich bin gerade dabei mir eine Funktion zu bauen die mir die englischen urls ins deutsche bzw umgekehrt übersetzt.

    testweise hab ich erstmal den englischen teil gemacht, ganz simpel, muss natürlich erweitert werden...

    aber irgendwo scheint da was mit dem synthax nich i.O.
    error reporting ist an.. trotzdem bekomm ich nur ne weiße seite.. fehler hab ich bisher nicht gefunden..

    wer kann helfen?

    PHP-Code:
    function url_translate($language$group$item$subitem) {

        
    $array = (    'group' => array( 'company' => 'unternehmen' ),
                    
    'item' => array( 'corporate-profil' => 'firmenprofil'),
                    
    'subitem' => array( 'music-without-limits' => 'musik-ohne-grenzen')
                    
                );
                
        if(
    $language == 'en') {

        
    $new_url 'de/'.$array['group'][$group].'/'.$array['item'][$item].'/'.$array['subitem'][$subitem];
        
        }    

        
        return 
    $new_url;

    }


    $language 'en';
    $group 'company';
    $item 'corporate-profil';
    $subitem 'music-withouts-limits';

    $test url_translate($language$group$item$subitem);
    echo 
    $test


  • #2
    Zitat von taurus Beitrag anzeigen
    error reporting ist an.. trotzdem bekomm ich nur ne weiße seite..
    Dann hast du vermutlich display_errors nicht aktiviert.

    fehler hab ich bisher nicht gefunden..
    Ich bekomme beim Testen deines Codes die folgende Fehlermeldung angezeigt:
    Parse error: syntax error, unexpected T_DOUBLE_ARROW in [...]
    Die gemeldete Zeile ist die dritte in deinem Code.

    Und der Grund ist auch klar - => wird innerhalb der Notation von Arrays verwendet; du hast es aber ausserhalb einer solchen „einfach so“ in deinem Code notiert.

    Kommentar


    • #3
      PHP-Code:
      ini_set('display_errors'1); 
      bin ich jetzt blöd? zeigt mir keine fehler an...


      ach ich bin ja blöd.. wenn man das array vergisst narf ist das peinlich ^^


      vorerst ist die funktion i.O. später möchte ich das ganze in die datenbank ausweiten.. auch text von der homepage etc also ein kl. content system... aber

      was meinst du zu der funktion? haste ne bessere idee?

      ich frag mich auch grad wie ich dann von de nach en konvertiere...
      zwei arrays eins für de eins für en wäre irgendwie unnötig..

      Kommentar


      • #4
        Zitat von taurus Beitrag anzeigen
        PHP-Code:
        ini_set('display_errors'1); 
        bin ich jetzt blöd? zeigt mir keine fehler an...
        Kann es ja auch nicht, weil dein komplettes Script gar nicht erst zur Ausführung kommt, weil es einen parse error enthält. Also wird auch diese Zeile nicht ausgeführt, also auch der Wert der Option nicht geändert ... (Frage damit beantwortet? )

        display_errors kann man auch noch an anderen Orten einstellen. Auf deinem lokalen Entwicklungssystem wäre die php.ini der passende Platz dafür.

        Kommentar


        • #5
          wenn ich
          PHP-Code:
          error_reporting(E_ALL E_STRICT );
          ini_set('display_errors'1);
          ini_set('display_startup_errors'1); 
          notiere müsste er mir doch einen parse error anzeigen ?? jedenfalls tut er es bei vielen andren errors


          oder.. ich glaube zu verstehen.. wenns in der php.ini stehen würde würde er mir den parse error anzeigen, right?

          Kommentar


          • #6
            Nein, es wird erst geparsed, dann ausgeführt. Dein error_reporting()-Aufruf kommt aber durch den parse error garnicht erst zur Ausführung, weswegen das error_reporting deiner php.ini verwendet wird, wo offenbar Fehler ausgeschaltet sind.

            PS: Im Zend-Framework kannst du übersetzte URLs z.B. über definierte Routen bereits verwenden. Falls du es selbst umsetzen möchtest, versuch mal alle Werte, die du in einer Funktion verwendest zu übergeben. Sprich dein $array sollte übergeben werden. Andernfalls ist deine Funktion nicht wiederverwendbar.
            "Mein Name ist Lohse, ich kaufe hier ein."

            Kommentar


            • #7
              ok da hast du recht
              hab nun die "translationlist" außerhalb der funktion so das ich diese auch ggf von einer db laden kann...

              anbei mal die aktuelle funktion. was meint ihr dazu?

              man könnte ja noch die anzahl der get parameter übergeben sodass ich völlig unabhängig von der anzahl der parameter bin... aber erstmal ist das so ok.. sonst noch einwände, wünsch oder tipps?

              mir gefallen hier z.b. die ganzen if schleifen nicht. das geht doch auch einfacher oder?

              PHP-Code:
              $tlist= array(    'group' => array(    'company' => 'unternehmen',
                                                  
              'products' => 'produkte'    
                                                  
                                              
              ),
                                              
                              
              'item' => array( 'corporate-profil' => 'firmenprofil'),
                              
              'subitem' => array( 'music-without-limits' => 'musik-ohne-grenzen')
                          
                          );

              function 
              url_translate($language$group$item$subitem$tlist) {


                  
              $find_next false;
                          
                  
              //Übersetzte von Englisch ins Deutsche        
                  
              if(mb_strtolower($language) == 'en') {
                  
                      
              //Standard URL
                      
              $new_url '/de/';
                      
                      
              //Prüfe ersten GET Parameter
                      
              if(isset($tlist['group'][$group])) {
                      
                          
              $new_url $new_url.$tlist['group'][$group].'/';
                          
                          
              //Prüfe zweiten GET Paremeter
                          
              if(isset($tlist['item'][$item])) {
                              
                              
              $new_url $new_url.$tlist['item'][$item].'/';
                              
                              
              //Prüfe dritten GET Parameter
                              
              if(isset($tlist['subitem'][$subitem])) {
                              
                                  
              $new_url $new_url.$tlist['subitem'][$subitem].'/';
                              }
                          }
                      } 
                  
                  
                  } else {
                  
                  
              //Übersetzte vom Deutschen ins Englische
                  
                  //Standard URL
                  
              $new_url '/en/';
                  
                  
              //Finde Übersetzung von GET['group']
                  
              foreach($tlist['group'] as $key => $val) {

                      if(
              mb_strtolower($val) == mb_strtolower($group)) {
                          
              $new_url $new_url.$key.'/';
                          
              $find_next true;
                      }
                  }
                  
                  
              //Wenn 1.GET Param gefunden auf zum nächsten
                  
              if($find_next) {
                      
                      
              $find_next false;
                      
                      
              //Finde Übersetzung von GET['item']
                      
              foreach($tlist['item'] as $key => $val) {

                          if(
              mb_strtolower($val) == mb_strtolower($item)) {
                              
              $new_url $new_url.$key.'/';
                              
              $find_next true;
                          }
                      }
                      
                      
              //Wenn 2.GET Param gefunden auf zum nächsten
                      
              if($find_next) {
                          
              //Finde Übersetzung von GET['item']
                          
              foreach($tlist['subitem'] as $key => $val) {

                              if(
              mb_strtolower($val) == mb_strtolower($subitem)) {
                                  
              $new_url $new_url.$key.'/';
                              }
                          }
                          
                          }
                      }
                  }
                  
                  
                  return 
              $new_url;


              Kommentar


              • #8
                Wie sieht denn der Aufruf von der Funktion und das Ergebnis aus?

                //Finde Übersetzung von GET['item']
                Das verwirrt mich irgendwie.
                "Mein Name ist Lohse, ich kaufe hier ein."

                Kommentar


                • #9
                  mhh das finde soll heißen .. finde den key wo value = $_GET['item'] ist...

                  z.b.
                  array(company => unternehmen)

                  also finde x wo wert = unternehmen ist ( also company

                  einfach nur den rückwärtsweg von deutsch ins englische


                  klar soweit?


                  der aufruf der funktion sieht so aus:
                  PHP-Code:
                  //Konvertiere EN in DE
                          
                  $de_url url_translate($_GET['language'], $_GET['group'], $_GET['item'], $_GET['subitem'], $tlist);

                          echo 
                  '<a href="'.$de_url.'" style="float:left;margin:0 10px 0 0;"><img src="/Common/pictures/icons/DE.gif" width="25" height="15" alt="german version" title="Zur Deutschen Sprache wechseln" /></a>'
                  die url ist z.b. wie folgt:
                  /en/company/references/
                  dabei ist:
                  $_GET['language'] = 'en'
                  $_GET['group'] = 'company'
                  $_GET['item'] = 'references'

                  daraus wird, erfolgreich getestet
                  /de/unternehmen/referenzen/

                  Kommentar

                  Lädt...
                  X