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.
ltrim
(PHP 4, PHP 5)
ltrim — Dizgenin başındaki boşlukları (veya diğer karakterleri) budar
Açıklama
string ltrim
( string
$dizge
[, string $karakterler
] )
Bu işlev dizge'nin başındaki boşlukları budar.
Değiştirgeler
-
dizge -
Budanacak dizge.
-
karakterler -
Seçimlik olarak,
karakterlerdeğiştirgesi kullanılarak budanacak karakterler belirlenebilir. Basitçe budamak istediğiniz tüm karakterleri belirtin. Bir karakter aralığını .. kullanarak belirtebilirsiniz.
Dönen Değerler
Bu işlev dizge'nin başındaki boşlukları budar.
İkinci değiştirge olmaksızın ltrim() sadece aşağıdaki
karakterleri budayacaktır:
- " " (ASCII 32 (0x20)), sıradan boşluk.
- "\t" (ASCII 9 (0x09)), sekme.
- "\n" (ASCII 10 (0x0A)), satırsonu.
- "\r" (ASCII 13 (0x0D)), satırbaşı.
- "\0" (ASCII 0 (0x00)), NUL-bayt.
- "\x0B" (ASCII 11 (0x0B)), dikey sekme.
Sürüm Bilgisi
| Sürüm: | Açıklama |
|---|---|
| 4.1.0 |
İsteğe bağlı karakterler değiştirgesi eklendi.
|
Örnekler
Örnek 1 - ltrim() örneği
<?php
$metin = "\t\tBir kaç kelam :) ... ";
$ikil = "\x09Örnek dizge\x0A";
$selam = "Merhaba Dünya";
var_dump($metin, $ikil, $selam);
print "\n";
$kırpık = ltrim($metin);
var_dump($kırpık);
$kırpık = ltrim($metin, " \t.");
var_dump($kırpık);
$kırpık = ltrim($selam, "aerMy");
var_dump($kırpık);
// $ikil'in başındaki ve sonundaki ASCII denetim karakterlerini budar
// (0'dan 31'e kadar, 0 ve 31 dahil)
$temiz = ltrim($ikil, "\x00..\x1F");
var_dump($temiz);
?>
Yukarıdaki örneğin çıktısı:
string(25) " Bir kaç kelam :) ... " string(14) " Örnek dizge " string(14) "Merhaba Dünya" string(23) "Bir kaç kelam :) ... " string(23) "Bir kaç kelam :) ... " string(11) "haba Dünya" string(13) "Örnek dizge "
dzek dot remove_this at dzek dot eu
24-Jul-2011 07:27
Mike
08-Jan-2011 05:03
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.
tanmar.de
06-May-2010 04:36
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.
Usamah M dot Ali (usamah1228 at gmail dot com)
04-Feb-2008 07:42
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).
John Sherwood
06-Aug-2006 06:13
To remove leading/trailing zeroes (example: "0123.4560"), doing a += 0 is easier than trim tricks.
