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

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

$str = "bla_string_bla_bla_bla"; 

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

С str_replace() он удаляет все bla_ .

Обычная форма, без регулярного выражения:

 $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 секунд) 1-й прогон (компиляция) и 0,0510 мс (0,000551,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.");