php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 13-03-2009, 23:34
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard de-DE;de...sinvoll zerlegen

Hallo, ich hab mal wieder was das nicht klappt.

es geht um die auswertung die hier rauskommt:
$lng=($lng=$_SERVER['HTTP_ACCEPT_LANGUAGE'])?$lng:"?";

das ergebnis speichere ich in einer Datei und das sieht dann so da drin aus:

de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
cs
en-us
en,*;q=0.5
cs,en-us;q=0.7,en;q=0.3
de
sl,en-gb;q=0.7,en;q=0.3
et

das sind 8 beispiele.
Das letzte Beispiel ist ganz schlimm, da steht das der client aus Ethiopien kommt, sollte aber aus "et"=>"Estnisch" kommen.
Nur weil da der 2te teil fehlt wird country durch language ersetzt:-(

Ich sehe das so:
Country/Language
cs,en-us -> client kommt aus tschechien, seine browsersprache englisch
sl,en-gb;q=0.7,en;q=0.3 -> client kommt aus slowenien, browsersprache englisch

et -> der kommt aus estland, liefert aber keine browsersprache :-(

Ich habe jetzt den string auf 5 zeichen gekürzt, der durcheinender dahinter ist nicht sooo wichtig denke ich mal.

also sieht meine textzeile jetzt so aus:
de-de
cs,en
sl,en
et

Wie kann man das vernünftig zerlegen, also schauen ob ein - oder ein , vorhanden ist, -> dann ist links das land und rechts die sprache
wenn es kürzer ist sowas wie "et", dann soll das die sprache sein, land gibts keins.

So hab ichs gemacht, will aber nicht richtig tun:

$al=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
$check=strpos($al,"-"); # Prüfen ob ein "-"-Zeichen vorhanden ist (z.B. de-ch)
if($check==true)
{$zt=explode("-",$al);
$lang=$zt[0]; # Linker Teil

# Vom rechten Teil nur die ersten 2 Stellen, falls der rechte Teil existiert
if(!empty($zt[1]) and strlen($zt[1]<3)){$country=strtolower(substr($zt[1],0,2));}

else{$country=strtolower($zt[0]);}
}
else
{$lang=$al; $country=$al;}

$arrLang=arrLang(); # $arrLang=array("af"=>"Afrikaans", "sq"=>"Albanisch", "ar"=>"Arabisch", "hy"=>"Armenisch",...
$arrCountry=arrCountry() #$ arrCountry=array("ad"=>"Andorra", "ae"=>"Arabische Emirate", "af"=>"Afghanistan",...
Mit Zitat antworten
  #2 (permalink)  
Alt 14-03-2009, 00:07
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Was ist dein Ziel?

Falls es um das Herausfinden der Sprache geht, die der Website-Besucher am liebsten spricht (wenn er seinen Browser richtig eingestellt hat).

Dafür gibts ein PEAR-Paket:
Es heißt HTTP.
Doku - interessant wäre hier HTTP::negotiateLanguage()

Noch'n paar Links, die dir ein Bild vermitteln, wie Sprachenkürzel generell aussehen können (es gibt nicht nur die mit zwei Buchstaben):

http://de.selfhtml.org/diverses/spra...sammengesetzte

http://de.wikipedia.org/wiki/ISO_639

http://www.loc.gov/standards/iso639-2/langhome.html
Mit Zitat antworten
  #3 (permalink)  
Alt 14-03-2009, 00:43
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Mein Ziel?...naja ich will das auswerten, mehr nicht :-)

Die Plugins die du mir verlinkt hast, das möcht ich nicht machen, alles selbstgemacht, dann weiß ich wen ich fertig machen kann, wenns nicht tu

Eigentlich gehts nur um die richtige zerlegung des strings. Naja die länder/sprachen mit 3 oder mehr zeichen, die muß man nicht haben.
Mit Zitat antworten
  #4 (permalink)  
Alt 14-03-2009, 08:29
ModestLife
 Registrierter Benutzer
Links : Onlinestatus : ModestLife ist offline
Registriert seit: Sep 2007
Beiträge: 105
ModestLife ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Dann guck dir das PEAR Package an und schau wie's dort gelöst ist. Danach kannst du's dann kopieren.
Mit Zitat antworten
  #5 (permalink)  
Alt 14-03-2009, 18:59
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Zitat:
Original geschrieben von RamonaS
Mein Ziel?...naja ich will das auswerten, mehr nicht :-)
Definiere "auswerten". Willst du die Daten nur sinnvoll speichern? Oder willst du wissen, welche Sprache der User am liebsten hat? Oder was willst du sonst? Verstehe das Problem nicht so richtig wenn ich ehrlich bin

Ich denke mal du willst bestimmte Informationen herausfinden, z.B. woher der Besucher kommt und/oder welche Sprache(n) er spricht - aber so ganz sicher bin ich mir da nicht
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #6 (permalink)  
Alt 15-03-2009, 19:49
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

@Arsen

>Ich denke mal du willst bestimmte Informationen herausfinden, z.B. woher der Besucher kommt und/oder welche Sprache(n) er spricht
Rischtisch!

Ja ich möchte aus den bereits gespeicherten Daten, wie oben beschrieben, alles rausholen.

Ich hab das zwar jetzt schon selber hinbekommen, aber ob das so richtig ist weiß ich nicht.

Jedenfalls werden nur die "normalen" 2-2 kombinationen beachtet.
Also de-AT kommt aus Östereich, browsersprache deutsch.

Manche haben zB nur
et
stehen, da habe ich es so gemacht, wenn es nur 2stellig ist, dann ist das hoffentlich nur die Browsersprache.

Ok genau kann man das nicht auswerten, man kann dort reinschreiben was man will im FF :-) ...aber ich rede jetzt von den normalen usern die in den tiefen der browserkennung nicht drann fummeln.
Mit Zitat antworten
  #7 (permalink)  
Alt 15-03-2009, 20:00
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von RamonaS
Jedenfalls werden nur die "normalen" 2-2 kombinationen beachtet.
Also de-AT kommt aus Östereich, browsersprache deutsch.

Manche haben zB nur
et
stehen, da habe ich es so gemacht, wenn es nur 2stellig ist, dann ist das hoffentlich nur die Browsersprache.
Nein, den Schluss kannst du so nicht ziehen.

http://www.w3.org/Protocols/rfc2616/...3.html#sec3.10
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #8 (permalink)  
Alt 15-03-2009, 20:12
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

en-cockney, i-cherokee, x-pig-latin
Ähmm genau hier hört mein wissen auf :-)

Hab sowas noch nie gesehen, auch in meinem log noch nie (etwa 70tausend einträge)...dort ist es alles 2-2 stellig oder nur 2 stellig oder garnix (die bösen roboter und kidiescripte :-)
Mit Zitat antworten
  #9 (permalink)  
Alt 15-03-2009, 23:08
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Original geschrieben von RamonaS
en-cockney, i-cherokee, x-pig-latin
Ähmm genau hier hört mein wissen auf :-)
en-cockney
Cherokee_(Sprache)
Pig_Latin


Alle drei haben übrigens gemeinsam, dass du ihre Sprecher nicht auf einen bestimmten Nationalstaat als Heimatland festnageln kannst. Und das ist auch das generelle Problem: Du kannst mit dem Accept-Language-Header eben nicht die Nationalität des Browserbenutzers feststellen. Als der Mozilla Firefox noch ganz neu war, gabs zeitweise die Version mit deutsch lokalisierter Benutzeroberfläche nur als "de-AT-Version", und "de-AT" hat der auch als Language-Accept-Header verschickt. Da hättest du eine Menge (deutschsprechende) Österreicher in deiner Statistik gehabt.

Zitat:
Hab sowas noch nie gesehen, auch in meinem log noch nie (etwa 70tausend einträge)...
Also ich hab in meinen Logs schon x-selfhtml und i-klingon entdecken können. Wer auch immer sich die Mühe gemacht hat, diese Sprachen extra seinen Browsereinstellungen hinzuzufügen ...

So lange du das ganze nur als Spaß siehst, ist auch nichts dagegen einzuwenden. Aber bleiben wir mal beim Beispiel de-AT: Die wenigsten deutsch sprechenden Österreicher machen sich die Mühe, "de-AT" in ihrem Browser als bevorzugte Sprache einzustellen. Und die begrüßt du dann höchstwahrscheinlich als Deutsche (weil "de" oder gar "de-DE" ausgewertet wurde). Gleiches gilt für Teile der Bevölkerungen der Schweiz, Luxemburgs, Belgiens usw. ...


Hier kann die Auswertung der IP-Adresse des Clients einen verlässlicheren Wert liefern.

Zitat:
...in meinem log noch nie (etwa 70tausend einträge)...dort ist es alles 2-2 stellig oder nur 2 stellig oder garnix (die bösen roboter und kidiescripte :-)
Hmm, gerade da wäre das Hinzufügen der entsprechenden Header doch ein Kinderspiel.

Geändert von fireweasel (15-03-2009 um 23:36 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 16-03-2009, 21:23
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Hallo fireweasel,

Das mit dem auswerten der IP ist eine gute idee, das wollte ich mal angehen, hat aber dann mangels wissen nicht geklappt.

Mal grudsätzliche frage: Stimmt es das jedem land alle 6 monate eine neue ip zugewiesen wird?
Oder kann man davon ausgehen das das erste teil der ip xxx. immer einem land zugeordnet werden kann und das auch so bleibt?

Wenn das nicht zutrifft kann man das ja vergessen, wäre dann so ungenau wie de-AT :-)

Naja ob de-AT oder de-DE, es gibt ja im grunde nur 3 staaten die deutsche sprache sprechen....im gegensatz zu spanisch oder mandarin :-)
Mit Zitat antworten
  #11 (permalink)  
Alt 16-03-2009, 21:28
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von RamonaS

Mal grudsätzliche frage: Stimmt es das jedem land alle 6 monate eine neue ip zugewiesen wird?
Oder kann man davon ausgehen das das erste teil der ip xxx. immer einem land zugeordnet werden kann und das auch so bleibt?
Gaanz weit daneben.
Eine IP ist, anders als eine TLD, niemals einem Staat zugeordnet, sondern wird Blockweise von Telekommunikationsfirmen eingekauft.

Der Link zu MaxMind ist ganz brauchbar, benutz doch den oder einen vergleichbaren Service, der durch eine Reihe von Methoden die Zuordnung IP <-> Land vornimmt.

Du weißt aber, daß Google Analytics und ähnliche Statistiktools sowas schon mitbringen?
Mit Zitat antworten
  #12 (permalink)  
Alt 17-03-2009, 08:55
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Naja ob de-AT oder de-DE, es gibt ja im grunde nur 3 staaten die deutsche sprache sprechen....im gegensatz zu spanisch oder mandarin :-)
Diese Zuordnung solltest du vermeiden, denn theoretisch kann dir auch ein deutschsprechender Italiener de-IT mitschicken...
Mit Zitat antworten
  #13 (permalink)  
Alt 17-03-2009, 22:25
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Hallo,

ja ok, also kann man sagen, die auswerung der language, kann man in der pfeife rauchen:-)

Dann lass ich das lieber, ich die auswertung jetzt so das sie für die "normalen" daten soweit funktionieren.

Danke für eure hilfe....
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:50 Uhr.