- Как удалить первый символ строки в PHP?
- Обновить
- PHP: substr и мощные альтернативы, чтобы вырезать часть строки
- Получаем строку начиная с определенного символа
- Получаем определенное количество символов
- Вырезаем символы с конца
- Получаем несколько последних символов
- Получаем первый символ строки
- Получаем последний символ строки
- Получение подстроки по регулярному выражению
- Проблема при работе с многобайтовыми кодировками.
- Продвинутая работа со строками
- Как удалить первый символ строки в PHP?
- Update
- Php вырезать первую букву
- Как удалить несколько элементов с начала строки!?
- Удаление первого элемента строки кириллица utf-8..
- Результат удаления первого элемента строки кириллица utf-8.
Как удалить первый символ строки в PHP?
Чтобы удалить все : начиная с строки, вы можете использовать ltrim :
$str = '::f:o:'; $str = ltrim($str, ':'); var_dump($str); //=> 'f:o:'
Функция substr() , вероятно, поможет вам здесь:
Строки индексируются начиная с 0, и этот второй параметр принимает режущий инструмент. Итак, сделайте это 1, и первый символ исчез.
$str = substr($str, 1); // this is a applepie :)
Удалите первую букву, заменив корпус
$str = "hello"; $str[0] = ""; // $str[0] = false; // $str[0] = null; // replaced by , but ok for echo
Время Exec для 1.000.000 тестов: 0.39602184295654 sec
Удалите первую букву с помощью substr ()
$str = "hello"; $str = substr($str, 1);
Время Exec для 1.000.000 тестов: 5.153294801712 сек.
Удалите первую букву с помощью ltrim ()
$str = "hello"; $str= ltrim ($str,'h');
Время Exec для 1.000.000 тестов: 5.2393000125885 сек.
Удалите первую букву с preg_replace ()
$str = "hello"; $str = preg_replace('/^./', '', $str);
Время Exec для 1.000.000 тестов: 6.8543920516968 сек.
$str = substr($str, 1); echo $str;
См. Пример руководства PHP 3
echo substr('abcdef', 1); // bcdef
не будет работать, так как вы не можете отключить часть строки:
Fatal error: Cannot unset string offsets
Обновить
После дальнейших тестов я больше не рекомендую использовать это. Это вызвало проблему для меня при использовании обновленной строки в запросе MySQL, и смена на substr исправила проблему. Я думал об удалении этого ответа, но комментарии предполагают, что он быстрее, так что кто-то может использовать его. Вы можете найти, что обрезка обновленной строки разрешает проблемы с длиной строки.
Иногда вам не нужна функция:
$str = 'AHello'; $str[0] = ''; echo $str; // 'Hello'
Этот метод изменяет существующую строку, а не создает другую.
Обрезает вхождения каждого слова в массиве от начала и до конца строки + пробел и необязательно дополнительные одиночные символы в соответствии с обычной обрезкой ()
// 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" ?>
Код работает хорошо для меня.
$str = substr($str ,-(strlen($str)-1));
Может быть, также и ответы.
PHP: substr и мощные альтернативы, чтобы вырезать часть строки
Поговорим о том, как обрезать строку в PHP. Функция substr в предназначена для получения части строки. Она выделяет подстроку из переданной строки и возвращает её. Для этого нужно указать строку, порядковый номер символа, начиная с которого нужно вырезать строку, порядковый номер символа, до которого мы верезаем подстроку.
Обратите внимание, что substr неправильно работает с многобайтовыми кодировками, поэтому мы будем использовать mb_substr, которая работает с ними корректно. Об этой проблеме немного ниже.
mb_substr( string $string, int $start, int|null $length = null, string|null $encoding = null ): string
- $string — строка, из которой мы будем вырезать подстроку
- $start — символ, с которого мы будем вырезать подстроку
- $length — сколько символов мы будем вырезать (по умолчанию будем вырезать все оставшиеся)
- $encoding — кодировка
Теперь перейдем к примерам.
Получаем строку начиная с определенного символа
$url = 'https://phpstack.ru/admin/'; $result = mb_substr($url, 8); echo $result; // результат: phpstack.ru/admin/
Мы вырезали первые 8 символов из строки, содержащей URL адрес.
Получаем определенное количество символов
Теперь давайте вырежем еще и «/admin/» в конце.
Мы бы могли сделать это указав количество символов, которое нужно взять, оно равно количеству символов в домене, их 11
$url = 'https://phpstack.ru/admin/'; $result = mb_substr($url, 8, 11); // возьмем 11 символов начиная с 8-го echo $result; // результат: phpstack.ru
Вырезаем символы с конца
Что если мы не знаем количества символов в домене, но знаем что нужно вырезать строку «/admin/», длина которой составляет 7 символов? Иными словами нам нужно вырезать с конца.
В таком случае нужно указать отрицательное число:
$url = 'https://phpstack.ru/admin/'; $result = mb_substr($url, 8, -7); // удаляем 8 символов с начала и 7 символов с конца echo $result; // результат: phpstack.ru
Получаем несколько последних символов
Что если нам нужно вернуть наоборот только 7 последних символов? Тогда код будет следующим:
$url = 'https://phpstack.ru/admin/'; $result = mb_substr($url, -7); // Получаем 7 символов с конца, остальное удаляем echo $result; // результат: /admin/
Получаем первый символ строки
$url = 'https://phpstack.ru/admin/'; $result = mb_substr($url, 0, 1); // Начиная с 0 берем 1 символ echo $result; // результат: h
Получаем последний символ строки
$url = 'https://phpstack.ru/admin/'; $result = mb_substr($url, -1); // начинаем на 1 символ относительно конца echo $result; // результат: /
Получение подстроки по регулярному выражению
Если вам не хватает возможностей substr, возможно вам необходим более мощный инструмент: preg_match — эта функция позволяет получить подстроки по регулярному выражению.
Проблема при работе с многобайтовыми кодировками.
$url = 'привет'; $result1 = mb_substr($url, 3); // удаляем 3 символа с начала $result2 = substr($url, 3); // удаляем 3 символа с начала var_dump($result1); // вет var_dump($result2); // �ивет
Что случилось? Почему в первом случае, где мы использовали mb_substr все сработало хорошо, а во втором случае вернулся какой-то битый символ?
Дело в том, что в UTF-8 кириллица кодируется 2 байтам, вместо одного. substr считает, что символ равен байту и поэтому вырезает 3 байта с начала. Таким образом она вырезала букву «П», и только половину буквы «Р». В общем вы поняли: всегда используйте mb_substr когда работаете с текстом, который потенциально может содержать многобайтовые символы.
Продвинутая работа со строками
Если вы часто работаете со строками, вам пригодится это расширение: symfony/string
С его помощью вы сможете легко вырезать строки. Взгляните на несколько примеров:
// returns a substring which starts at the first argument and has the length of the // second optional argument (negative values have the same meaning as in PHP functions) u('Symfony is great')->slice(0, 7); // 'Symfony' u('Symfony is great')->slice(0, -6); // 'Symfony is' u('Symfony is great')->slice(11); // 'great' u('Symfony is great')->slice(-5); // 'great' // reduces the string to the length given as argument (if it's longer) u('Lorem Ipsum')->truncate(3); // 'Lor' u('Lorem Ipsum')->truncate(80); // 'Lorem Ipsum' // the second argument is the character(s) added when a string is cut // (the total length includes the length of this character(s)) u('Lorem Ipsum')->truncate(8, '…'); // 'Lorem I…' // if the third argument is false, the last word before the cut is kept // even if that generates a string longer than the desired length u('Lorem Ipsum')->truncate(8, '…', false); // 'Lorem Ipsum'
Как удалить первый символ строки в PHP?
Функция substr() , вероятно, поможет вам здесь:
Строки индексируются начиная с 0, и этот второй параметр принимает режущий инструмент. Сделайте так, что 1, а первый char ушел.
Знать о юникоде Если вы имеете дело с произвольной строкой (например, «Ål
это неправильная реализация, она не работает с односимвольной строкой «a». если вы попробуете односимвольную строку, substr вернет логическое значение
@anru Руководство указывает, что если длина строки равна параметру start, будет возвращена пустая строка. До версии 7 было возвращено false . Таким образом, вам нужно проверить, равны ли они, если это не то поведение, которое вы хотите.
$str = substr($str, 1); // this is a applepie :)
Удалите первую букву, заменив футляр
$str = "hello"; $str[0] = ""; // $str[0] = false; // $str[0] = null; // replaced by �, but ok for echo
Время Exec для 1.000.000 тестов: 0.39602184295654 sec
Удалите первую букву с помощью substr()
$str = "hello"; $str = substr($str, 1);
Время Exec для 1.000.000 тестов: 5.153294801712 sec
Удалите первую букву с помощью ltrim()
$str = "hello"; $str= ltrim ($str,'h');
Время Exec для 1.000.000 тестов: 5.2393000125885 sec
Удалите первую букву с preg_replace()
$str = "hello"; $str = preg_replace('/^./', '', $str);
Время Exec для 1.000.000 тестов: 6.8543920516968 sec
Благодарю. Смотрите мое обновление, хотя. Это вызвало проблему при использовании обновленной строки в запросе SQL.
Я только что попробовал $str[0] = »; решение и оно не сработало. хорошо это делает , однако , если вы потом планируете использовать переменную, например , для сравнения > или < он не будет работать. Он по-прежнему считается `` as + `например $str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
@Ian: я сталкивался с той же проблемой, когда извлекал записи из API с помощью ключевого слова, пробовал var_dump($keyword) который показывал предыдущую длину символа . затем я пытался обрезать ключевое слово, а затем оно работало нормально var_dump(trim($keyword)) .. Надеюсь, это поможет кому-то .. 🙂
Это не работает. Позиция «удален» заменяется нулевым байтом, поэтому вместо «привет» вы получаете «\ 0hello».
Я получаю «Предупреждение: Невозможно назначить пустую строку для смещения строки» для $ str [0] = «»;
$str = substr($str, 1); echo $str;
echo substr('abcdef', 1); // bcdef
не будет работать, так как вы не можете отменить часть строки: —
Fatal error: Cannot unset string offsets
Update
После дальнейших тестов я больше не рекомендую использовать это. Это вызвало у меня проблему при использовании обновленной строки в запросе MySQL и изменении на substr исправлена проблема. Я думал об удалении этого ответа, но комментарии предполагают, что он быстрее, так что кто-то может использовать его. Вы можете найти обрезку обновленной строки, которая разрешает проблемы с длиной строки.
Иногда вам не нужна функция:
$str = 'AHello'; $str[0] = ''; echo $str; // 'Hello'
Этот метод изменяет существующую строку, а не создает другую.
Php вырезать первую букву
В качестве первого примера мы будем использовать латиницу.
Для того, чтобы удалить первый элемент строки нужно в функцию substr в первом элементе записать строку, а во втором — количество элементов строки, которое вы хотите удалить. Поскольку у нас идет речь о первом элементе строки, то ставим 1.
Как удалить несколько элементов с начала строки!?
Предположим, что нам нужно не только удалить первый элемент/знак строки, а например несколько . , чтобы удалить несколько элементов строки с начала строки в функцию substr вторым элементом нужно указать количество требуемых знаков, которые вы хотите удалить!
Например мы хотим удалить три элемента с начала строки!
Удаление первого элемента строки кириллица utf-8..
Для удаления первого элемента/знака строки в utf-8 в кириллице, функция substr не сработает, потому, что количество символов в отличается, чтобы каждый раз — за разом не повторять сделаем страницу посвященную этой теме -> в utf-8 не работает!
В зависимости от настроек скрипта, настроек сервера нужно указать внутреннюю кодировку скрипта:
И для удаления первого элемента строки в кириллице UTF-8 нам нужна другая функция -> mb_substr
Результат удаления первого элемента строки кириллица utf-8.
Вы должны спросить! А что произойдет . если мы не укажем кодировку mb_internal_encoding — резонный вопрос!
Поэтому мы сделаем тоже самое только выше объявления этой кодировки и передадим данные в переменную и выведем с помощь. echo прямо здесь:
Результат: Как видим. вместо того, чтобы удалить первый элемент строки у нас какая-то кракозябра вылезла .