如何在PHP中删除字符串的第一个字符?

yul*_*ika 242 php string

$str=':this is a applepie :) ';
Run Code Online (Sandbox Code Playgroud)

如何使用PHP,删除第一个字符:

mar*_*rio 533

substr()功能可能会帮助您:

 $str = substr($str, 1);
Run Code Online (Sandbox Code Playgroud)

字符串从0开始索引,此函数第二个参数采用cutstart.所以,让那个1,第一个字符消失了.

  • 注意unicode.如果您正在处理任意字符串(例如"Ål< - 丹麦语为鳗鱼"),则应使用mb_substr并指定编码. (34认同)
  • @anru手册说明如果字符串长度等于start参数,则返回空字符串.在版本7之前,返回了`false`.因此,如果这不是您想要的行为,您需要检查它们是否相等. (2认同)

Hai*_*vgi 310

要从:字符串的开头删除每个字符,可以使用ltrim:

$str = '::f:o:';
$str = ltrim($str, ':');
var_dump($str); //=> 'f:o:'
Run Code Online (Sandbox Code Playgroud)

  • 请注意,lrtim将删除所有`:::::`.有时这不是理想的行为. (107认同)
  • 请注意,这仅适用于单个字符.ltrim将修剪提供的字符串中的所有字符:`ltrim('prefixprefix_postfix','prefix')`导致''_postfix';` (5认同)
  • “如何删除 PHP 中字符串的第一个字符”是问题,该评论实际上并没有回答这个问题。 (2认同)

ale*_*exn 93

使用substr:

$str = substr($str, 1); // this is a applepie :)
Run Code Online (Sandbox Code Playgroud)


Hay*_*enn 64

执行时间为3个答案:

通过更换外壳删除第一个字母

$str = "hello";
$str[0] = "";
// $str[0] = false;
// $str[0] = null;
// replaced by ?, but ok for echo
Run Code Online (Sandbox Code Playgroud)

执行1.000.000次测试的时间:0.39602184295654


删除substr()的第一个字母

$str = "hello";
$str = substr($str, 1);
Run Code Online (Sandbox Code Playgroud)

执行1.000.000次测试的时间:5.153294801712


用ltrim()删除第一个字母

$str = "hello";
$str= ltrim ($str,'h');
Run Code Online (Sandbox Code Playgroud)

执行1.000.000次测试的时间:5.2393000125885


用preg_replace()删除第一个字母

$str = "hello";
$str = preg_replace('/^./', '', $str);
Run Code Online (Sandbox Code Playgroud)

执行1.000.000次测试的时间:6.8543920516968

  • 我只是尝试了`$ str [0] ='';`解决方案而且*没有*工作.那么它确实如果你然后计划使用变量例如比较`>`或`<`它将无法正常工作.它仍然计为``as +`例如`$ str ='hello'; $ str [0] =''; 后续代码var_dump($海峡); // string(5)'ello' (6认同)
  • 这不起作用."删除"位置被替换为空字节,因此您得到"\ 0hello"而不是"hello". (3认同)

Tar*_*odi 25

这是代码

$str = substr($str, 1); 

echo $str;
Run Code Online (Sandbox Code Playgroud)

输出:

this is a applepie :)
Run Code Online (Sandbox Code Playgroud)


Gam*_*erz 9

$str = substr($str, 1);
Run Code Online (Sandbox Code Playgroud)

请参阅PHP手册示例3

echo substr('abcdef', 1);     // bcdef
Run Code Online (Sandbox Code Playgroud)

注意:

unset($str[0]) 
Run Code Online (Sandbox Code Playgroud)

将无法工作,因为你不能取消字符串的一部分: -

Fatal error: Cannot unset string offsets
Run Code Online (Sandbox Code Playgroud)


ryb*_*111 9

更新

经过进一步测试后,我不建议再使用它了.当我在MySQL查询中使用更新的字符串时,它导致了一个问题,并改为substr修复问题.我想删除这个答案,但评论表明它更快,所以有人可能会使用它.您可能会发现修剪更新的字符串可以解决字符串长度问题.


有时你不需要一个功能:

$str[0] = '';
Run Code Online (Sandbox Code Playgroud)

例如:

$str = 'AHello';
$str[0] = '';
echo $str; // 'Hello'
Run Code Online (Sandbox Code Playgroud)

此方法修改现有字符串而不是创建另一个字符串.

  • 对此一定要小心。下面的代码输出 bool(false)。$foo = '书'; $bar = '书'; $bar = substr($bar, 1); $foo[0] = ''; var_dump($foo === $bar); (2认同)
  • 这不会删除第一个字符。它将其替换为不可打印的“chr(0)”。它相当于“$str[0] = chr(0);”。您可以使用“var_dump(bin2hex($str));”检查字符串代码,您将得到“0048656c6c6f”。看到第一个“00”字节了吗? (2认同)

Dan*_*ray 8

接受的答案是:

$str = ltrim($str, ':');
Run Code Online (Sandbox Code Playgroud)

但是:当一开始有多个时会删除多个.

$str = substr($str, 1);
Run Code Online (Sandbox Code Playgroud)

将从头开始删除任何字符.

然而,

if ($str[0] === ':')
    $str = substr($str, 1);
Run Code Online (Sandbox Code Playgroud)

工作得很好.


Cha*_*rma 7

要在PHP中删除字符串的第一个字符,

$string = "abcdef";     
$new_string = substr($string, 1);

echo $new_string;
Generates: "bcdef"
Run Code Online (Sandbox Code Playgroud)


Ade*_*IMM 6

您可以使用sbstr()函数

$amount = 1;   //where $amount the the amount of string you want to delete starting  from index 0
$str = substr($str, $amount);
Run Code Online (Sandbox Code Playgroud)