Str_replace og arrays
Hey guys.Jeg sidder og er ved at kode noget log og jeg oplever et underligt/irriterende problem. Jeg kan ikke rigtig se hvad der skaber problemet desværre, så jeg må jo forhøre mig her.
Det der sker, er at jeg registerer sproget fra den besøgende, det henter jeg ud og det vil jeg formattere til noget mere brugervenligt, så det står pænt i loggen.
Dertil har jeg dette (udpluk),
...
$lan_short = array("da", "en", "fr", "de", "ja", "zh", "ru", "fi", "no", "es", "sv", "cs", "nl", "ro", "is", "it", "el");
$lan_da = array("Dansk", "Engelsk", "Fransk", "Tysk", "Japansk", "Kinesisk", "Russisk", "Finsk", "Norsk", "Spansk", "Svensk", "Tjekkisk", "Hollandsk", "Rumænsk", "Islandsk", "Italiensk", "Græsk");
while ($data = mysql_fetch_array($query_log)) {
$number = ++$number;
$ip = $data['ip'];
$dato = str_replace($month_eng, $month_da, $data['datoFormat']);
$ua = browser_check($data['browser']);
$sprog = str_replace($lan_short, $lan_da, substr(strtolower($data['sprog']), 0, 2));
$url = "http://www.webweaver.dk" . $data['url'];
$color = !$color;
...
$lan_short = array("da", "en", "fr", "de", "ja", "zh", "ru", "fi", "no", "es", "sv", "cs", "nl", "ro", "is", "it", "el");
$lan_da = array("Dansk", "Engelsk", "Fransk", "Tysk", "Japansk", "Kinesisk", "Russisk", "Finsk", "Norsk", "Spansk", "Svensk", "Tjekkisk", "Hollandsk", "Rumænsk", "Islandsk", "Italiensk", "Græsk");
while ($data = mysql_fetch_array($query_log)) {
$number = ++$number;
$ip = $data['ip'];
$dato = str_replace($month_eng, $month_da, $data['datoFormat']);
$ua = browser_check($data['browser']);
$sprog = str_replace($lan_short, $lan_da, substr(strtolower($data['sprog']), 0, 2));
$url = "http://www.webweaver.dk" . $data['url'];
$color = !$color;
...
Problemet er den str_replace på $sprog jeg kører. Jeg har et par arrays, hvor jeg vælger de værdier jeg vil fremvise. Og det har virket fint før hen, hvor jeg har brugt det i andre situationer, men nu opdagede jeg en mystisk fejl, efter jeg har tilføjet et par ekstra sprog.
Hvis en person bliver registreret som Engelsk, så udskriver den "EngGræsksk" og ved Russisk, skriver den RussIslandskk. Hvis det er Kinesisk, skriver den "KinSpanskIslandskk".
Der er en sammenhæng mellem det, da landekoderne er at finde i de sprognavne, som bliver smidt ind, hvor de ikke skal. F. eks. Kinesisk indeholder både es og is, og derfor smider den Spansk og Islandsk ind.
Men jeg forstår det stadig ikke. Hvorfor den blander de 2 arrays på den måde. Kan det være fordi at det ligger i en løkke og den checker på stringen igen og igen ...? Den burde jo skifte hver gang, da det kommer fra rækkerne i databasen. Udover det kan jeg slet ikke se sammenhængen i hvordan den kan smide noget "ekstra ind" eftersom den ikke checker på $sprog, men $data['sprog']..
Er det mig som har stirret mig helt blind på et eller andet, eller?
På forhånd tak.
Mvh. Webweaver
