Обратите внимание, что lrtim удалит все :::::. Иногда это нежелательное поведение.
CoR
5
обратите внимание, что это предназначено только для отдельных символов. Итрим обрежет все символы в предоставленной строке: ltrim('prefixprefix_postfix', 'prefix')результаты'_postfix';
Знать о юникоде Если вы имеете дело с произвольной строкой (например, «Ål <- danish for eel»), вам следует использовать mb_substr и указать кодировку.
Томас Дженсен
это неправильная реализация, она не работает с односимвольной строкой «а». если вы попробуете односимвольную строку, substr вернет логическое значение
anru
2
@anru Руководство устанавливает, что если длина строки равна параметру start, будет возвращена пустая строка. До версии 7 falseбыл возвращен. Таким образом, вам нужно проверить, равны ли они, если это не то поведение, которое вы хотите.
Спасибо. Смотрите мое обновление, хотя. Это вызвало проблему при использовании обновленной строки в запросе SQL.
rybo111
6
Я просто попробовал $str[0] = '';решение, и оно не сработало. хорошо это делает , однако , если вы потом планируете использовать переменную, например , сравнивать >или <она не будет работать. Например, он по-прежнему считается `` as + `' $str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
Ян
@Ian: Я столкнулся с той же проблемой, когда извлекал записи из API с использованием ключевого слова, пытался var_dump($keyword)показать предыдущую длину символа ... затем я попытался обрезать ключевое слово, а затем все заработало нормально var_dump(trim($keyword))... Надеюсь, это кому-нибудь поможет ... :)
Сайед Кариб
3
Это не работает. Позиция «удален» заменяется нулевым байтом, поэтому вместо «привет» вы получаете «\ 0hello».
Йозеф Куфнер
1
Я получаю "Предупреждение: Невозможно назначить пустую строку для смещения строки" для $ str [0] = "";
После дальнейших испытаний я не рекомендую использовать это больше. Это вызвало проблему для меня при использовании обновленной строки в запросе MySQL и изменении на substrисправленную проблему. Я думал об удалении этого ответа, но комментарии предполагают, что он как-то быстрее, так что кто-то может его использовать. Вы можете обнаружить, что обрезка обновленной строки решает проблемы длины строки.
Иногда вам не нужна функция:
$str[0]='';
Например:
$str ='AHello';
$str[0]='';
echo $str;// 'Hello'
Этот метод изменяет существующую строку, а не создает другую.
@EmanuilRusev как так? Просто любопытно, если ты имеешь в виду, что он быстрее печатается или работает быстрее.
rybo111
Я имею в виду, что это работает быстрее.
Эмануил Русев
@EmanuilRusev Мне было бы интересно, если бы вы могли предоставить некоторые статистические данные, поскольку я добавлю к ответу.
rybo111
1
Должен быть осторожен с этим. Код ниже выводит bool (false). $ foo = 'book'; $ bar = 'book'; $ bar = substr ($ bar, 1); $ foo [0] = ''; var_dump ($ foo === $ bar);
мысльrepo
8
Принятый ответ:
$str = ltrim($str,':');
работает, но удалит несколько, :когда их будет больше одного.
Обрезает вхождения каждого слова в массиве из начала и конца строки + пробел и, возможно, дополнительные одиночные символы в соответствии с обычным trim ()
<?php
function trim_words($what, $words, $char_list =''){if(!is_array($words))returnfalse;
$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"?>
этот не работает с односимвольной строкой: как «а»
анру
Вы правы =) Итак, поверьте, что возможным решением было бы проверить, прежде чем оно будет содержать только один символ. Например: $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): $ str; Или $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): ''; потому что идея состоит в том, чтобы удалить последний символ, если у вас есть только один ...: P
Ответы:
Чтобы удалить каждый
:
из начала строки, вы можете использовать ltrim :источник
:::::
. Иногда это нежелательное поведение.ltrim('prefixprefix_postfix', 'prefix')
результаты'_postfix';
substr()
Функция, вероятно , поможет вам здесь:Строки индексируются, начиная с 0, и второй параметр этой функции принимает начало отсечения. Так что сделайте это 1, и первый символ исчезнет.
источник
false
был возвращен. Таким образом, вам нужно проверить, равны ли они, если это не то поведение, которое вы хотите.Используйте substr :
источник
Время выполнения для 3 ответов:
Удалить первую букву, заменив корпус
Время выполнения для 1.000.000 тестов:
0.39602184295654
секУдалите первую букву с помощью substr ()
Время выполнения для 1.000.000 тестов:
5.153294801712
секУдалите первую букву с помощью ltrim ()
Время выполнения для 1.000.000 тестов:
5.2393000125885
секУдалите первую букву с помощью preg_replace ()
Время выполнения для 1.000.000 тестов:
6.8543920516968
секисточник
$str[0] = '';
решение, и оно не сработало. хорошо это делает , однако , если вы потом планируете использовать переменную, например , сравнивать>
или<
она не будет работать. Например, он по-прежнему считается `` as + `'$str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
var_dump($keyword)
показать предыдущую длину символа ... затем я попытался обрезать ключевое слово, а затем все заработало нормальноvar_dump(trim($keyword))
... Надеюсь, это кому-нибудь поможет ... :)Вот код
Вывод:
источник
Чтобы удалить первый символ строки в PHP,
источник
Смотрите PHP пример 3
Примечание:
не будет работать, так как вы не можете удалить часть строки: -
источник
Обновить
После дальнейших испытаний я не рекомендую использовать это больше. Это вызвало проблему для меня при использовании обновленной строки в запросе MySQL и изменении на
substr
исправленную проблему. Я думал об удалении этого ответа, но комментарии предполагают, что он как-то быстрее, так что кто-то может его использовать. Вы можете обнаружить, что обрезка обновленной строки решает проблемы длины строки.Иногда вам не нужна функция:
Например:
Этот метод изменяет существующую строку, а не создает другую.
источник
Принятый ответ:
работает, но удалит несколько,
:
когда их будет больше одного.удалит любого персонажа с самого начала.
Тем не мение,
работает отлично.
источник
Вы можете использовать функцию sbstr ()
источник
Обрезает вхождения каждого слова в массиве из начала и конца строки + пробел и, возможно, дополнительные одиночные символы в соответствии с обычным trim ()
источник
Код хорошо работает для меня.
Может быть, помочь с ответами тоже.
источник
использовать функцию mb_substr
источник