К сожалению, PHP не поддерживает это по умолчанию. Вот функция, которая делает это:
function str_replace_once($needle, $replace, $haystack){
$pos = strpos($haystack, $needle);
if ($pos === false) {
return $haystack;
}
return substr_replace($haystack, $replace, $pos, strlen($needle));
}
Если вы хотите заменить текст только в начале строки:
$str = preg_replace('/^'.preg_quote($word, '/').'/', '', $str);
Если ваша строка на самом деле является списком, разделенным |
, см. Ответ @ lonesomeday.