php заменить первое вхождение строки из 0-й позиции

Я хочу найти и заменить первое слово другим в php следующим образом:

$str="nothing inside"; 

Заменить «ничего» на «что-то» путем поиска и замены без использования substr

вывод должен быть: «что-то внутри»

Solutions Collecting From Web of "php заменить первое вхождение строки из 0-й позиции"

Используйте preg_replace() с лимитом 1:

 preg_replace('/nothing/', 'something', $str, 1); 

Замените регулярное выражение /nothing/ любой строкой, которую вы хотите найти. Поскольку регулярные выражения всегда оцениваются слева направо, это всегда будет соответствовать первому экземпляру.

на странице man для str_replace (http://php.net/manual/en/function.str-replace.php) вы можете найти эту функцию

 function str_replace_once($str_pattern, $str_replacement, $string){ if (strpos($string, $str_pattern) !== false){ $occurrence = strpos($string, $str_pattern); return substr_replace($string, $str_replacement, strpos($string, $str_pattern), strlen($str_pattern)); } return $string; } 

образец использования: http://codepad.org/JqUspMPx

попробуй это

 preg_replace('/^[a-zA-Z]\s/', 'ReplacementWord ', $string) 

то, что он делает, – это выбрать что угодно: от начала до первого пробела и заменить его на replcementWord. обратите внимание на пробел после replicationWord. это потому, что мы добавили \s в строку поиска

 preg_replace('/nothing/', 'something', $str, 1); 

Эта функция str_replace – это та, которую вы ищете.

Я столкнулся с этой проблемой и хотел найти решение, и это было не на 100% для меня, потому что если строка была как $str = "mine'this , то appostrophe вызовет проблему, поэтому я придумал трюк litle:

 $stick=''; $cook = explode($str,$cookie,2); foreach($cook as $c){ if(preg_match("/^'/", $c)||preg_match('/^"/', $c)){ //we have 's dsf fds... so we need to find the first |sess| because it is the delimiter' $stick = '|sess|'.explode('|sess|',$c,2)[1]; }else{ $stick = $c; } $cookies.=$stick; } 

Разве это не лучшее для компактности и производительности?

 if(($offset=strpos($string,$replaced))!==false){ $string=substr_replace($replaced,$replacer,$offset,strlen($replaced)); } 

ltrim () удалит ненужный текст в начале строки.

 $do = 'nothing'; // what you want $dont = 'something'; // what you dont want $str = 'something inside'; $newstr = $do.ltrim( $str , $dont); echo $newstr.'<br>';