Linuchs: bestimmte Sprache aus mehrsprachigem String filtern

Beitrag lesen

Moin,

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.

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>

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 );

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

Bei fünf Sprachen und dem Sprach-Index 4 wären es:

0, 4, [10, 16, ...,] count($arr) -1

Mir will einfach nicht einfallen, wie ich diese Zahlenfolge mit einer Formel generieren kann.

Wer kann helfen? Oder gibt es einen besseren Lösungsansatz?

Gruß, Linuchs

Edit: 0, 2, [6, 10, 14, 18, ...,] count($arr) -1 ist falsch, ergibt

textA: endeutsch