ltrim
(PHP 4, PHP 5)
ltrim — Удаляет пробелы (или другие символы) из начала строки
Описание
string ltrim
( string $str
[, string $charlist
] )
Удаляет пробелы (или другие символы) из начала строки.
Список параметров
- str
-
Входная строка.
- charlist
-
С помощью параметра charlist можно также указать удаляемые символы. Просто перечислите все символы, которые вы хотите удалить. Можно указать конструкцию .. для обозначения диапазона символов.
Возвращаемые значения
Эта функция возвращает строку str с удаленными из начала строки пробелами. Если второй параметр не передан, ltrim() удаляет следующие символы:
- " " (ASCII 32 (0x20)), обычный пробел.
- "\t" (ASCII 9 (0x09)), символ табуляции.
- "\n" (ASCII 10 (0x0A)), символ перевода строки.
- "\r" (ASCII 13 (0x0D)), символ возврата каретки.
- "\0" (ASCII 0 (0x00)), NUL-байт.
- "\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.
Список изменений
| Версия | Описание |
|---|---|
| 4.1.0 | Добавлен параметр charlist. |
Примеры
Пример #1 Пример использования ltrim()
<?php
$text = "\t\tThese are a few words :) ... ";
$binary = "\x09Example string\x0A";
$hello = "Hello World";
var_dump($text, $binary, $hello);
print "\n";
$trimmed = ltrim($text);
var_dump($trimmed);
$trimmed = ltrim($text, " \t.");
var_dump($trimmed);
$trimmed = ltrim($hello, "Hdle");
var_dump($trimmed);
// удаляем управляющие ASCII-символы с начала $binary
// (от 0 до 31 включительно)
$clean = ltrim($binary, "\x00..\x1F");
var_dump($clean);
?>
Результат выполнения данного примера:
string(32) " These are a few words :) ... " string(16) " Example string " string(11) "Hello World" string(30) "These are a few words :) ... " string(30) "These are a few words :) ... " string(7) "o World" string(15) "Example string "
- addcslashes
- addslashes
- bin2hex
- chop
- chr
- chunk_split
- convert_cyr_string
- convert_uudecode
- convert_uuencode
- count_chars
- crc32
- crypt
- echo
- explode
- fprintf
- get_html_translation_table
- hebrev
- hebrevc
- hex2bin
- html_entity_decode
- htmlentities
- htmlspecialchars_decode
- htmlspecialchars
- implode
- join
- lcfirst
- levenshtein
- localeconv
- ltrim
- md5_file
- md5
- metaphone
- money_format
- nl_langinfo
- nl2br
- number_format
- ord
- parse_str
- printf
- quoted_printable_decode
- quoted_printable_encode
- quotemeta
- rtrim
- setlocale
- sha1_file
- sha1
- similar_text
- soundex
- sprintf
- sscanf
- str_getcsv
- str_ireplace
- str_pad
- str_repeat
- str_replace
- str_rot13
- str_shuffle
- str_split
- str_word_count
- strcasecmp
- strchr
- strcmp
- strcoll
- strcspn
- strip_tags
- stripcslashes
- stripos
- stripslashes
- stristr
- strlen
- strnatcasecmp
- strnatcmp
- strncasecmp
- strncmp
- strpbrk
- strpos
- strrchr
- strrev
- strripos
- strrpos
- strspn
- strstr
- strtok
- strtolower
- strtoupper
- strtr
- substr_compare
- substr_count
- substr_replace
- substr
- trim
- ucfirst
- ucwords
- vfprintf
- vprintf
- vsprintf
- wordwrap
Коментарии
To remove leading/trailing zeroes (example: "0123.4560"), doing a += 0 is easier than trim tricks.For those who use right-to-left languages such as Arabic, Hebrew, etc., it's worth mentioning that ltrim() (which stands for left trim) & rtrim() (which stands for right trim) DO NOT work contextually. The nomenclature is rather semantically incorrect. So in an RTL script, ltrim() will trim text from the right direction (i.e. beginning of RTL strings), and rtrim() will trim text from the left direction (i.e. end of RTL strings).The neat trick from Mr. Sherwood has only one ugly side-effect: If the "number" contained in the string is considerably large, you will end up with an int (or float) value that has nothing to do with the original number ...
You may use preg_replace instead:
$number_string = preg_replace('~^[0]*([1-9][0-9]*)$~','$1',$number_string);
This kills any leading zeros safely without changing any other data.
Hope this helps.
Keep in mind the amount of resources preg_replace() uses.
I would suggest a simple if statement if you need to parse through large amounts of data.
<?php
function remove_leading_zeros_from_number($number_string) {
$limit = 9000.1
$temp = $number
(float) $temp;
if ($number < $limit) {
$number += 0;
} else {
preg_replace('~^[0]*([1-9][0-9]*)$~','$1',$number_string)
}
}
?>
Code is untested, but probably sound.
Guys, if += 0 is producing wrong values sometimes, and preg_replace is cpu consuming, then just stick to the main function described on that page, and use:<?php
$value = ltrim($value, '0');
?>
should be the fastest and most reliable.
I think all those comments can be misleading for begginers checking this page - it's sort of using magic tricks to reinvent the wheel.