2011-01-09 162 views
185
$str=':this is a applepie :) '; 

如何使用PHP,删除第一个字符:如何删除PHP中的字符串的第一个字符?

+0

可能重复的[PHP减去字符串的第一个字符](http://stackoverflow.com/questions/3592000/php-subtract-first-character-of-string) – Gordon 2011-01-09 11:48:20

+0

可能的重复[删除前4个字符的字符串的PHP](http://stackoverflow.com/questions/4286423/remove-first-4-characters-of-a-string-php) – Gordon 2011-01-09 11:48:44

+1

使用substr($ str,1); – 2016-02-15 11:50:41

回答

229

从字符串的开头删除所有:,您可以使用ltrim:每一个字的

$str = '::f:o:'; 
$str = ltrim($str, ':'); 
var_dump($str); //=> 'f:o:' 
81

使用substr

$str = substr($str, 1); // this is a applepie :) 
440

substr()功能可能会帮助你在这里:

$str = substr($str, 1); 

字符串进行索引从开始0,这个函数的第二个参数是cutstart。所以,让1,第一个字符消失。

+26

请注意unicode。如果你正在处理一个任意的字符串(例如“Ål< - 丹麦的鳗鱼”),你应该使用mb_substr并指定编码。 – 2012-06-17 11:22:02

+0

这不是一个正确的实现,它不适用于单个字符串“a”。如果你尝试单个字符串,substr返回一个布尔值 – anru 2015-10-26 02:20:39

+2

@anru手册指出如果字符串长度等于start参数,将返回一个空字符串。在版本7之前,返回了“false”。所以如果这不是你想要的行为,你需要检查它们是否相等。 – rybo111 2016-02-15 16:18:28

2

修剪出现在一个阵列从一个字符串+空格和可选额外的单字符开头和结尾按正常修剪()

<?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" 
?> 
9
$str = substr($str, 1); 

参见PHP manual example 3

echo substr('abcdef', 1);  // bcdef 

注:

unset($str[0]) 

将无法​​正常工作你可以字符串不要清除部分: -

Fatal error: Cannot unset string offsets 
8

更新

经过进一步检查,我不知道建议使用此更多。在MySQL查询中使用更新的字符串时,它对我造成了一个问题,并且更改为substr解决了此问题。我想删除这个答案,但评论表明它以某种方式更快,所以有人可能会使用它。您可能会发现修改更新的字符串可解决字符串长度问题。


有时候,你并不需要一个函数:

$str[0] = ''; 

例如:

$str = 'AHello'; 
$str[0] = ''; 
echo $str; // 'Hello' 

此方法会修改现有的字符串,而不是创建另一个。

56

Exec的时间为3分的答案:

通过更换的情况下

$str = "hello"; 
$str[0] = ""; 
// $str[0] = false; 
// $str[0] = null; 
// replaced by �, but ok for echo 

Exec的时间为1.000删除第一个字母。000测试:0.39602184295654


移除带有SUBSTR()

$str = "hello"; 
$str = substr($str, 1); 

Exec的时间的第一个字母为1.000.000测试:5.153294801712


删除与LTRIM首字母()

$str = "hello"; 
$str= ltrim ($str,'h'); 

为1.000.000测试Exec的时间:5.2393000125885


移除带有的preg_replace()

$str = "hello"; 
$str = preg_replace('/^./', '', $str); 

Exec的时间的第一个字母为1.000.000测试:6.8543920516968

1

的代码对我很好。

$str = substr($str ,-(strlen($str)-1)); 

也许,有助于答案。

17

下面是代码

$str = substr($str, 1); 

echo $str; 

输出:

this is a applepie :) 
1

接受的答案:

$str = ltrim($str, ':'); 

的作品,但会删除多个:当在启动一个以上。

$str = substr($str, 1); 

将从一开始就删除任何字符。

然而,

if ($str[0] === ':') 
    $str = substr($str, 1); 

完美。

相关问题