我有一个输入字符串:

$str = ':this is a applepie :) ';

我怎么能删除第一个发生:用PHP?

期望输出:这是一个苹果馅饼:)


当前回答

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

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

其他回答

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

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

使用字符串的子串:

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

执行时间为3个答案:

通过替换大小写来删除第一个字母

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

执行1.000.000次测试的时间:0.39602184295654秒


删除substr()的第一个字母

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

1.000.000次测试的执行时间:5.153294801712秒


用ltrim()删除第一个字母

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

1.000.000次测试的执行时间:5.2393000125885秒


使用preg_replace()删除第一个字母

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

1.000.000次测试的执行时间:6.8543920516968秒

修剪数组中从字符串开头和结尾开始出现的每个单词+空格和根据正常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"
?>

使用mb_substr函数

    mb_substr("我abc", 1);