Удаление строки из начала строки
у меня есть строка, которая выглядит так:
$str = "bla_string_bla_bla_bla";
как я могу удалить первый bla_
; но только если он находится в начале строки?
С str_replace()
, Он удаляет всеbla_
' s.
8 ответов:
простая форма, без регулярных выражений:
$prefix = 'bla_'; $str = 'bla_string_bla_bla_bla'; if (substr($str, 0, strlen($prefix)) == $prefix) { $str = substr($str, strlen($prefix)); }
требуется: 0.0369 МС (0.000,036,954 секунд)
и:
$prefix = 'bla_'; $str = 'bla_string_bla_bla_bla'; $str = preg_replace('/^' . preg_quote($prefix, '/') . '/', '', $str);
требуется: 0.1749 МС (0.000,174,999 секунд) первый запуск (компиляция), и 0.0510 МС (0.000,051,021 секунды) после.
профилируется на моем сервере, очевидно.
Вы можете использовать регулярные выражения с символом каре (
^
) который привязывает совпадение к началу строки:$str = preg_replace('/^bla_/', '', $str);
function remove_prefix($text, $prefix) { if(0 === strpos($text, $prefix)) $text = substr($text, strlen($prefix)).''; return $text; }
здесь.
$array = explode("_", $string); if($array[0] == "bla") array_shift($array); $string = implode("_", $array);
Я думаю, что substr_replace делает то, что вы хотите, где вы можете заменить часть строки: http://nl3.php.net/manual/en/function.substr-replace.php (это позволит вам смотреть только в начале строки.)
вы можете использовать параметр count из str_replace ( http://nl3.php.net/manual/en/function.str-replace.php ), это позволит вам ограничить количество замен, начиная слева, но это не будет принудительно это должно быть в самом начале.