The accepted answer:
$str = ltrim($str, ':');
works but will remove multiple :
when there are more than one at the start.
$str = substr($str, 1);
will remove any character from the start.
However,
if ($str[0] === ':')
$str = substr($str, 1);
works perfectly.
To remove first Character of string in PHP,
$string = "abcdef";
$new_string = substr($string, 1);
echo $new_string;
Generates: "bcdef"
use mb_substr function
mb_substr("?abc", 1);
After further tests, I don't recommend using this any more. It caused a problem for me when using the updated string in a MySQL query, and changing to substr
fixed the problem. I thought about deleting this answer, but comments suggest it is quicker somehow so someone might have a use for it. You may find trimming the updated string resolves string length issues.
Sometimes you don't need a function:
$str[0] = '';
For example:
$str = 'AHello';
$str[0] = '';
echo $str; // 'Hello'
This method modifies the existing string rather than creating another.
The substr()
function will probably help you here:
$str = substr($str, 1);
Strings are indexed starting from 0, and this functions second parameter takes the cutstart. So make that 1, and the first char is gone.
$str = substr($str, 1);
echo substr('abcdef', 1); // bcdef
Note:
unset($str[0])
will not work as you cannot unset part of a string:-
Fatal error: Cannot unset string offsets
you can use the sbstr() function
$amount = 1; //where $amount the amount of string you want to delete starting from index 0
$str = substr($str, $amount);
Exec time for the 3 answers :
Remove the first letter by replacing the case
$str = "hello";
$str[0] = "";
// $str[0] = false;
// $str[0] = null;
// replaced by ?, but ok for echo
Exec time for 1.000.000 tests : 0.39602184295654
sec
Remove the first letter with substr()
$str = "hello";
$str = substr($str, 1);
Exec time for 1.000.000 tests : 5.153294801712
sec
Remove the first letter with ltrim()
$str = "hello";
$str= ltrim ($str,'h');
Exec time for 1.000.000 tests : 5.2393000125885
sec
Remove the first letter with preg_replace()
$str = "hello";
$str = preg_replace('/^./', '', $str);
Exec time for 1.000.000 tests : 6.8543920516968
sec
Use substr:
$str = substr($str, 1); // this is a applepie :)
Trims occurrences of every word in an array from the beginning and end of a string + whitespace and optionally extra single characters as per normal trim()
<?php
function trim_words($what, $words, $char_list = '') {
if(!is_array($words)) return false;
$char_list .= " \t\n\r\0\x0B"; // default trim chars
$pattern = "(".implode("|", array_map('preg_quote', $words)).")\b";
$str = trim(preg_replace('~'.$pattern.'$~i', '', preg_replace('~^'.$pattern.'~i', '', trim($what, $char_list))), $char_list);
return $str;
}
// for example:
$trim_list = array('AND', 'OR');
$what = ' OR x = 1 AND b = 2 AND ';
print_r(trim_words($what, $trim_list)); // => "x = 1 AND b = 2"
$what = ' ORDER BY x DESC, b ASC, ';
print_r(trim_words($what, $trim_list, ',')); // => "ORDER BY x DESC, b ASC"
?>
The code works well for me.
$str = substr($str ,-(strlen($str)-1));
Maybe, contribute with answers too.
Here is the code
$str = substr($str, 1);
echo $str;
Output:
this is a applepie :)
Source: Stackoverflow.com