2010-07-04 5 views
0

que faire si je veux remplacer seulement la première occurrence d'un mot dans une chaîne. Par exemple: Je veux changer la première occurrence de Heelo dans une chaîne avec Kiran.manipulation de chaînes

input string == **"hello world i am a noob hello to all"** 
output string == **"kiran world i am a noob hello to all"** 

le str_replace ne fonctionne pas ....

Thx à l'avance ....

+0

Veuillez poster votre code. Que voulez-vous dire exactement par «ne fonctionne pas»? –

+0

Que signifie "ne fonctionne pas"? Et qu'avez-vous encore essayé? – Bevor

+0

str_replace change les deux occurrences de "bonjour". j'ai juste besoin de remplacer le premier 'bonjour' par 'kiran' –

Répondre

3

Vous pouvez utiliser preg_replace. La 4e rubrique de cette fonction vous permet de définir combien de fois un remplacement doit avoir lieu.

$output = preg_replace("/$find/", $replace, $input, 1); 

Si vous ne voulez pas l'expression régulière méta-caractères à Interpretation d'une dans la chaîne de recherche, utilisez:

$output = preg_replace("/\\Q$find\\E/", $replace, $input, 1); 
+0

Que se passe-t-il si à la fois hello et kiran sont stockés dans des chaînes. dites $ find = 'hello'; $ replace = 'kiran'; $ input = 'Bonjour tout le monde je suis un bonjour à tous'; –

+0

J'ai utilisé le preg_replace ('/' + $ find + '/', $ replace, $ input, 1); Mais il montre l'erreur "Délimiteur ne doit pas être alphanumérique ou backslash dans C: \ wamp \ www \ test \ e.php" sur cette ligne –

+0

J'ai mis à jour ma réponse pour tenir compte du cas que vous avez mentionné. – tomit

0

Vous pouvez utiliser stripos() et substr_replace():

$str = "hello world i am a noob hello to all"; 
$needle = 'hello'; 
echo substr_replace($str, 'kiran', stripos($needle, $str), strlen($needle)); 

donne

kiran world i am a noob hello to all 

stripos() donne l'indice de la première occurrence d'une sous-chaîne (insensible à la casse) et substr_replace() remplacer la sous-chaîne à l'index et la longueur in par l'argument donné.