Hallo,
HTML-Platzhalterdateien können mehrsprachig sein. Die Anzahl der Sprachen ist von Programm zu Programm variabel. Alle Programme haben de, en, nl - aber ich schließe nicht aus, dass neue Programme auch fr, es, ... können und die alten nach und nach erweitert werden.
bis hier kann ich dir folgen.
Bisher konnten die Sprachen pro Zeile nur einmal vorkommen, in der neuen Funktion dürfen sie beliebig oft sein, hier zweimal:
<p>textA: ###de###en###nl### textB: ###deutsch###english###Nederlands###</p>
Auch das verstehe ich noch, aber ich finde die Datenorganisation alles andere als gut.
Ich übergebe der php-Funktion also die Textzeile, die Anzahl der Sprachen und den Sprach-Index 2 für en:
$zeile = "<p>textA: ###de###en###nl### textB: ###deutsch###english###Nederlands###</p>"; echo waehleSprache( $zeile, 3, 2 );
Ähm, mit Index 2 komme ich auf nl (Niederländisch): 0->de, 1->en, 2->nl.
Der Return-String soll so aussehen:
<p>textA: en textB: english</p>
Ich zerlege also die Zeile in ein Array und benötige mit Sicherheit den ersten und letzten Wert, aber dazwischen ist unklar:
$arr = explode( '###', $zeile ); $string = $arr[0]; // vorlaufender Text for ( $i=1; $i<count($arr); $i++ ) { $string .= ...; // siehe Frage } $string .= $arr[$i]; // nachlaufender Text
Irgendwie habe ich gerade ein Brett vorm Kopf, deshalb die Frage:
Ich weiß, dass ich bei drei Sprachen und dem Sprach-Index 2 diese Sub-Arrays benötige:
0, 2, [6, 10, 14, 18, ...,] count($arr) -1
Also sei s die Anzahl der Sprachen und i der ab 1 zählende Index, dann brauchst du ns+0 und ns+i, wobei n ab 0 läuft und solange erhöht wird, bis die Array-Grenze überschritten ist.
Wer kann helfen? Oder gibt es einen besseren Lösungsansatz?
Ich würde beim bisherigen Ansatz bleiben und nur ein Element pro String verwenden. Und das dann als mehrstufiges Array organisieren:
str = definition[index][lang]
Hierbei ist index die fortlaufende Nummer des Textfragments, lang der 0-basierte Index der gewünschten Sprache.
Ciao,
Martin
Ein Tag, an dem du nicht wenigstens einmal gelacht hast, ist ein verlorener Tag.