2010-07-04 2 views
0

Что делать, если я хочу заменить только первое заполнение слова в строке. например: Я хочу изменить первое появление heelo в строке с кираном.Обработка строк

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

str_replace не работает ....

Thx заранее ....

+0

Пожалуйста, внесите свой код. Что значит «не работает»? –

+0

Что значит «не работает»? И что ты еще пробовал? – Bevor

+0

str_replace меняет оба вида «привет». мне просто нужно заменить первое «привет» на «kiran» –

ответ

3

Вы можете использовать preg_replace. 4-ая награда этих функций позволяет установить, сколько раз должна произойти замена.

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

Если вы не хотите, регулярное выражение мета-символы, которые будут в интерпретируются с строки поиска, использования:

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

Что делать, если оба hello и kiran хранятся в строках. $ find = 'hello'; $ replace = 'kiran'; $ input = 'hello world i am noob hello to all'; –

+0

Я использовал preg_replace ('/' + $ find + '/', $ replace, $ input, 1); Но он показывает ошибку: «Разграничитель не должен быть буквенно-цифровым или обратным слэшем в C: \ wamp \ www \ test \ e.php» в этой строке –

+0

Я обновил свой ответ на счет для упомянутого вами случая. – tomit

0

Вы можете использовать stripos() и substr_replace():

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

дает

kiran world i am a noob hello to all 

stripos() дает индекс первого вхождения подстроки (случай нечувствительным) и substr_replace() заменить подстроку на индекс i и длины n с помощью данного аргумента.