HTTP_ACCEPT_LANGUAGE komisch?

  • Hey ich habe ein Problem beim land auslesen.

    wenn ich

    PHP
    <?php
    echo $_SERVER['HTTP_ACCEPT_LANGUAGE']; 
    ?>

    mache kommt das als "Land" Raus :

    Code
    de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4

    live :

    Meine Hp^^

  • Zitat von Script;180855

    Hey ich habe ein Problem beim land auslesen.

    wenn ich

    PHP
    <?php
    echo $_SERVER['HTTP_ACCEPT_LANGUAGE']; 
    ?>

    mache kommt das als "Land" Raus :

    Code
    de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4

    live :

    Meine Hp^^

    Hm, de steht schonmal für deutschland :D
    Kannst ja den rest splitten und via If Abfrage aus de --> Deutschland machen :D

    [LEFT][COLOR=Yellow][SIZE=2][FONT=Verdana]mfG.[/FONT][/SIZE][/COLOR]
    [/LEFT]

  • das mit If versteh ich ^.^ aber splitten oO sry bin erst seit 3 Tagen an Php^^

  • also wenn du erst 3 tag an php bist solltest du dich vieleicht erst mal mit leichteren sachen beschäftigen ;)

    und wenn du da nur wenn deutsch drin vorkommt Deutschland anzeigen lassen willst veruschs mal so :

    PHP
    $string = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    if ( preg_match("/de-DE/", $string)){
     echo 'Deutsch';
    }Else{
     echo 'Eben Kein Deutsch :)';
    }

    [CENTER]
    [/CENTER]

  • Danke jetzt hab ich If vollkommen verstanden :>

    aber hab auch gerade rausgefunden, dass das nicht der Land Code ist sondern Der "Browser Land" Code :P

  • Zitat von Eldoran;180867

    also wenn du erst 3 tag an php bist solltest du dich vieleicht erst mal mit leichteren sachen beschäftigen ;)

    und wenn du da nur wenn deutsch drin vorkommt Deutschland anzeigen lassen willst veruschs mal so :

    PHP
    $string = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    if ( preg_match("/de-DE/", $string)){
     echo 'Deutsch';
    }Else{
     echo 'Eben Kein Deutsch :)';
    }

    Warum so umständlch? Dan bräuchte man für jedes Land eine preg_match
    funktion. So wäre es viel klüheker:

    PHP
    $land = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE'])[0];
    switch($land)
    {
     case 'de-DE': echo "deutsch";
     break;
     case 'en-EN' echo "englisch";
     break;
     default: echo "keine der oben genannten sparchen";
     break;
    }
  • Zitat von felix;181047

    Warum so umständlch? Dan bräuchte man für jedes Land eine preg_match
    funktion. So wäre es viel klüheker:

    PHP
    $land = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE'])[0];
    switch($land)
    {
     case 'de-DE': echo "deutsch";
     break;
     case 'en-EN' echo "englisch";
     break;
     default: echo "keine der oben genannten sparchen";
     break;
    }



    ich habs so umstädnlich gemacht ;) weil ich mri nicht sicher war wie ich die so zerlege das ich die per case abfragen kann ;) sonst hätte ichs türlich auch über switch&case gmacht weil if da eifnach viel zu nervig ist ^^

    allerdings sucht er ja eine andere funktion wie ich denke,

    du versuchst raus zu finden woher der besucher kommt oder ?

    [CENTER]
    [/CENTER]

  • naja ich bekomme jedenfalls den Error :

    Code
    Parse error: syntax error, unexpected '[' in C:\xampplite\htdocs\test\index.php on line 46

    und wenn ich dann in zeile 46 das "[0]" weg mache kommt i-ein error mit T echo oder sowas

  • Das hab ich wo ich die sachen reinschreib :

  • So bitte schön, so sollte es gehen ...

    [CENTER][COLOR=Red][/COLOR]
    [/CENTER]

  • Aber wenn man schon schreibt dann bitte auch so das es ordentlich eingerückt ist

    das kann man ja sonst net lesen :D

  • Zitat von ulle;181479

    Aber wenn man schon schreibt dann bitte auch so das es ordentlich eingerückt ist

    das kann man ja sonst net lesen :D


    joa =D

    und wenns wirklich die herkunft des besuchers anzeigen soll funktioniert das damit nicht oO weil de-DE und en-EN vorkommen werden in alle euren browsern ^^

    [CENTER]
    [/CENTER]

  • also bis jetzt spuckt es wenigstens das aus :

    "keine der oben genannten sprachen"

  • Zitat

    und wenns wirklich die herkunft des besuchers anzeigen soll funktioniert das damit nicht oO weil de-DE und en-EN vorkommen werden in alle euren browsern ^^


    Haut mich, wenn meine Aussage nicht stimmen soll, ich habe es aber so in Erinnerung, dass die Sprachen geordnet sind. Zuerst kommt die, die der Nutzer am Meisten wünscht.

    Zum Fehler:

    PHP
    $lang = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
    switch($land)


    wird zu

    PHP
    $lang = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
    switch($land[0])

    Solche Fehler könntest du aber auch ganz einfach selber finden, indem du dir die entsprechende Variable (in diesem Fall also $land) mit var_dump() ausgibst.

  • Zitat von TriLight;181854

    Haut mich, wenn meine Aussage nicht stimmen soll, ich habe es aber so in Erinnerung, dass die Sprachen geordnet sind. Zuerst kommt die, die der Nutzer am Meisten wünscht.

    Zum Fehler:

    PHP
    $lang = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
    switch($land)

    wird zu

    PHP
    $lang = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
    switch($land[0])

    Solche Fehler könntest du aber auch ganz einfach selber finden, indem du dir die entsprechende Variable (in diesem Fall also $land) mit var_dump() ausgibst.

    will dich ja jetzt nicht ärgern oder so ne ...

    aaaaaber, mit dienem skript wirds garnicht tun ....

    allerdings hast du recht es muss die 1 position des arrays abgefragt werden.

    allerdings auch von der richtigen variable oO

    wenn du in $lang alles speicherrst wird dir eine case ($land[0]) nicht mehr bringen alls das was bis jetzt da stand.
    also wenn schon dann so :

    PHP
    $land = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
    switch($land[0])

    [CENTER]
    [/CENTER]

  • Oh, das habe ich nicht gesehen. :whisper:
    Wer rechnet denn auch damit? :/

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!