我有一个输入字符串:
$str = ':this is a applepie :) ';
我怎么能删除第一次发生的:与PHP?
:
期望输出:this is a applepie :)
this is a applepie :)
使用字符串的子串:
$str = substr($str, 1); // this is a applepie :)
substr()函数可能会在这里帮助你:
substr()
$str = substr($str, 1);
字符串从0开始索引,该函数的第二个参数接受cutstart。所以把它设为1,第一个char就没有了。
要从字符串开头删除每个:,可以使用ltrim:
$str = '::f:o:'; $str = ltrim($str, ':'); var_dump($str); //=> 'f:o:'
修剪数组中从字符串开头和结尾开始出现的每个单词+空格和根据正常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" ?>
看到PHP手册示例3
echo substr('abcdef', 1); // bcdef
注意:
unset($str[0])
不会起作用,因为你不能取消字符串的一部分:-
Fatal error: Cannot unset string offsets
经过进一步的测试,我不建议再使用它。当我在MySQL查询中使用更新的字符串时,它导致了一个问题,并更改为substr解决了这个问题。我想过删除这个答案,但评论表明它以某种方式更快,所以有人可能会用到它。您可能会发现修改更新的字符串可以解决字符串长度问题。
substr
有时候你不需要一个函数:
$str[0] = '';
例如:
$str = 'AHello'; $str[0] = ''; echo $str; // 'Hello'
此方法修改现有字符串,而不是创建另一个字符串。
执行时间为3个答案:
通过替换大小写来删除第一个字母
$str = "hello"; $str[0] = ""; // $str[0] = false; // $str[0] = null; // replaced by �, but ok for echo
1.000.000次测试的执行时间:0.39602184295654秒
0.39602184295654
删除substr()的第一个字母
$str = "hello"; $str = substr($str, 1);
1.000.000次测试的执行时间:5.153294801712秒
5.153294801712
用ltrim()删除第一个字母
$str = "hello"; $str= ltrim ($str,'h');
1.000.000次测试的执行时间:5.2393000125885秒
5.2393000125885
使用preg_replace()删除第一个字母
$str = "hello"; $str = preg_replace('/^./', '', $str);
1.000.000次测试的执行时间:6.8543920516968秒
6.8543920516968
代码对我来说运行良好。
$str = substr($str ,-(strlen($str)-1));
也许,你也可以给出答案。
公认的答案是:
$str = ltrim($str, ':');
工作,但将删除多个:时,有不止一个在开始。
将从起始位置删除任何字符。
然而,
if ($str[0] === ':') $str = substr($str, 1);
完美的工作。
使用mb_substr函数
mb_substr("我abc", 1);