Remplacer n-éme caractère dans une chaine

aisha -  
 aisha -
Bonjour,
SVP je cherche une fonction php qui fait remplace n-éme caractére dansune chaine par une autre
Exemple:
$chaine='KOI;jgh5;bsb';
j'amerai remplacer la 3éme ; par un autre caractére Aide svp :)
Merdi d'avance :)


A voir également:

1 réponse

Tomy2e Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonjour, s'il s'agit d'un simple changement pour un seul caractère ce code suffira
<?php
$chaine='KOI;jgh5;bsb'; 
$chaine[2] = "L";
echo $chaine;
?>

Sinon pour une plus grande flexibilité la fonction substr_replace ( https://www.php.net/manual/fr/function.substr-replace.php ) est plus adaptée
0
aisha
 
Merci de m'avoir répondu, ça va étre quoi le resultat dans votre exemple??
0
Tomy2e Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   859
 
le 3ème caractère, la lettre "I", sera remplacé par un "L"
0
aisha
 
ok en fait je sais pas la position exception du caractére je veux remplacer dans l'exemple au dessus la 6éme ; par un autre caractére.
0
Tomy2e Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   859
 
Ah d'accord, j'avais mal compris, il aurait fallu mettre des guillemets sur le point virgule, dans ce cas j'ai trouvé une fonction sur internet qui permet de faire ce qui est demandé
<?php
function str_replace_nth($search, $replace, $subject, $nth)
{
    $found = preg_match_all('/'.preg_quote($search).'/', $subject, $matches, PREG_OFFSET_CAPTURE);
    if (false !== $found && $found > $nth) {
        return substr_replace($subject, $replace, $matches[0][$nth][1], strlen($search));
    }
    return $subject;
}
$subject='KOI;jgh5;bsb'; 

echo str_replace_nth(';', ',', $subject, 1);
?>

Dans cet exemple on remplace le 2ème ";" par un ",".
Pour modifier le 6ème ";" il faut remplacer le 1 par un 5 dans la fonction str_replace_nth()
0
aisha
 
Merci enormement de votre aide, je sais la tester tt de suite.
0