Zeichen an bestimmter Position ersetzen
snoot
- php
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.)
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
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