Удаление строки из начала строки


у меня есть строка, которая выглядит так:

$str = "bla_string_bla_bla_bla";

как я могу удалить первый bla_; но только если он находится в начале строки?

С str_replace(), Он удаляет всеbla_ ' s.

8 113

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);
<?php
$str = 'bla_string_bla_bla_bla';
echo preg_replace('/bla_/', '', $str, 1); 
?>

Я думаю, что 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 ), это позволит вам ограничить количество замен, начиная слева, но это не будет принудительно это должно быть в самом начале.

str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

теперь делает то, что вы хотите.

$str = "bla_string_bla_bla_bla";
str_replace("bla_","",$str,1);

удалить www. от начала строки, это самый простой способ (ltrim)

$a="www.google.com";
echo ltrim($a, "www.");