Как удалить первый символ строки в PHP? - PullRequest
226 голосов
/ 09 января 2011
$str=':this is a applepie :) ';

Как использовать PHP , удалить первый символ :

Ответы [ 13 ]

517 голосов
/ 09 января 2011

Функция substr(), вероятно, поможет вам в этом:

 $str = substr($str, 1);

Строки индексируются, начиная с 0, и второй параметр этой функции принимает начало отсечения.Так что сделайте это 1, и первый символ исчезнет.

290 голосов
/ 09 января 2011

Чтобы удалить все : из начала строки, вы можете использовать ltrim :

$str = '::f:o:';
$str = ltrim($str, ':');
var_dump($str); //=> 'f:o:'
89 голосов
/ 09 января 2011

Использование substr :

$str = substr($str, 1); // this is a applepie :)
64 голосов
/ 07 марта 2014

Время выполнения для 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 сек

24 голосов
/ 28 марта 2017

Вот код

$str = substr($str, 1); 

echo $str;

Вывод:

this is a applepie :)
9 голосов
/ 06 декабря 2013

Обновление

После дальнейших тестов я больше не рекомендую использовать это.Это вызвало проблему при использовании обновленной строки в запросе MySQL, и изменение на substr устранило проблему.Я думал об удалении этого ответа, но комментарии предполагают, что он как-то быстрее, так что кто-то может его использовать.Обрезка обновленной строки может решить проблемы с длиной строки.


Иногда вам не нужна функция:

$str[0] = '';

Например:

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

Этот метод изменяет существующую строку, а не создает другую.

9 голосов
/ 30 июля 2013
$str = substr($str, 1);

См. Пример руководства по PHP 3

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

Примечание:

unset($str[0]) 

не будет работать , так как вы не можете сброситьчасть строки: -

Fatal error: Cannot unset string offsets
8 голосов
/ 05 февраля 2018

Принятый ответ:

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

работает, но удалит несколько :, если в начале более одного.

$str = substr($str, 1);

удалит любой символ с начала.

Однако

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

работает отлично.

3 голосов
/ 04 октября 2018

вы можете использовать функцию sbstr ()

$amount = 1;   //where $amount the the amount of string you want to delete starting  from index 0
$str = substr($str, $amount);
2 голосов
/ 07 марта 2012

Обрезает вхождения каждого слова в массиве из начала и конца строки + пробел и, возможно, дополнительные одиночные символы в соответствии с обычным 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"
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...