snoot: Zeichen an bestimmter Position ersetzen

Hio,

wie kann ich ein Zeichen an einer bestimmten Position in einem String ersetzen?

Bspw. habe ich den String "Geldbeutel" und will das zweite 'e' an 6. Position ersetzen. Bei den Replacefunktionen (str/preg_replace) gibts ja keinen Parameter dafür. Es kann auch sein, dass ich zwei Zeichen ersetzen möchte als bspw. das 'eu' an 6. und 7. Position.

Ist es am einfachsten, den String in einer Schleife Zeichen für Zeichen zu durchlaufen und beim 6./7. Durchlauf dann das Zeichen zu ersetzen?

~~~php for($i = 0; $i < strlen("Geldbeutel"); $i++)
  {
    $zeichen = substr("Geldbeutel",$i,1)
    if($i == 5 || $i == 6)
    {
      $zeichen = "<strong>" . $zeichen . "</strong>";
    }
    $str .=$zeichen;
  }

  
(Das dabei dann sowas rauskommt - Geld<strong>e</strong><strong>u</strong>tel - ist mir im Grunde egal.)
  1. Huuu,

    wie kann ich ein Zeichen an einer bestimmten Position in einem String ersetzen?

    Ich möchte einen gesuchten Strin im gefundenen String markieren und mache es so:

          $suchw_len = mb_strlen($arr_in['such_worte'],'UTF-8');  
      
          // KOMMT SUCHWORT IN HAUPTBRANCHE VOR?  
          $start_pos = mb_strpos ( 'x'.mb_strtolower($row['hauptbranche']), mb_strtolower($arr_in['such_worte']), 0, 'UTF-8' );  
          if ( $start_pos )  
          {  
            $start_pos--;  
            $row['hauptbranche'] = mb_substr($row['hauptbranche'],0,$start_pos,'UTF-8')  
                                 . '<span class=bggelb>'  
                                 . mb_substr($row['hauptbranche'],$start_pos,$suchw_len,'UTF-8')  
                                 . '</span>'  
                                 . mb_substr($row['hauptbranche'],$start_pos+$suchw_len,128,'UTF-8');  
          }  
    
    

    Gruß, Kalle

  2. Hello,

    Ist es am einfachsten, den String in einer Schleife Zeichen für Zeichen zu durchlaufen und beim 6./7. Durchlauf dann das Zeichen zu ersetzen?

    Nein, das ist keine gute Idee mehr.
    Als erstes solltest Du wissen, wie der String codiert ist. Ist er als Single-Byte-Code (z.B. ISO-8859-1) codiert oder ist er in einem Multi-Byte-Code (z.B. utf8) codiert?

    Für die Ersetzung kommt dann eigentlich nur noch die mb_substr()-Funktion in Frage.
    http://de3.php.net/manual/en/function.mb-substr.php

    Der Index-Operator  ( $string[] )funktioniert leider nur für byteorientiertes Arbeiten.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de