Я хочу найти и заменить первое слово другим в php следующим образом:
$str="nothing inside";
Заменить "ничего" на "что-то" путем поиска и замены без использования substr
вывод должен быть: "что-то внутри"
Я хочу найти и заменить первое слово другим в php следующим образом:
$str="nothing inside";
Заменить "ничего" на "что-то" путем поиска и замены без использования substr
вывод должен быть: "что-то внутри"
Используйте 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 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>';