Remplacer n-éme caractère dans une chaine

Fermé
aisha - 12 juin 2015 à 15:46
 aisha - 12 juin 2015 à 16:50
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 jeudi 21 février 2013 Statut Membre Dernière intervention 18 août 2016 858
12 juin 2015 à 15:51
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
Merci de m'avoir répondu, ça va étre quoi le resultat dans votre exemple??
0
Tomy2e Messages postés 816 Date d'inscription jeudi 21 février 2013 Statut Membre Dernière intervention 18 août 2016 858
12 juin 2015 à 16:17
le 3ème caractère, la lettre "I", sera remplacé par un "L"
0
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 jeudi 21 février 2013 Statut Membre Dernière intervention 18 août 2016 858
12 juin 2015 à 16:43
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
Merci enormement de votre aide, je sais la tester tt de suite.
0