finswimmer: Text an mehreren Positionen im String einfügen

Beitrag lesen

Wieviel Zeilen Code sind das?

Das geht schon noch. Ich hatte eher Performancebedenken, da ich so ja jedes einzelne Zeichen durchgehe.

$pos = array( 5, 9, 12, 16, 21 );  // 5 Positionen
$alt = 'qwertzuiopasdfghjklxcvbnm,';
$neu = '';

for ($i=0; $i < strlen($alt); $i++) {
    if (in_array($i, $pos)) {
        $neu .= '<span class="varpos">'.substr($alt, $i, 1).'</span>';
    } else {
        $neu .= substr($alt, $i, 1);
    }
}

Meine jetztige Lösung finde ich irgendwie schöner:

$pos = array( 5, 9, 12, 16, 21 );  // 5 Positionen
$sequence= 'qwertzuiopasdfghjklxcvbnm,';

for ($i = count($pos)-1; $i >= 0; $i--) {
    $sequence = substr_replace($sequence, "</span>", $pos[$i]+1, 0);
    $sequence = substr_replace($sequence, '<span class="varpos">', $pos[$i], 0);
}

finswimmer