Perhatikan bahwa lrtim akan menghapus semua :::::. Terkadang perilaku ini tidak diinginkan.
CoR
5
perhatikan bahwa ini hanya ditujukan untuk karakter tunggal. ltrim akan memangkas semua karakter dalam string yang disediakan: ltrim('prefixprefix_postfix', 'prefix')hasil dalam'_postfix';
Cody Django
556
The substr()Fungsi mungkin akan membantu Anda di sini:
$str = substr($str,1);
String diindeks mulai dari 0, dan parameter fungsi ini mengambil cutstart. Jadi buat itu 1, dan char pertama hilang.
Waspadai unicode. Jika Anda berurusan dengan string arbitrer (mis. "Ål <- danish for eel"), Anda harus menggunakan mb_substr dan tentukan pengkodeannya.
Thomas Jensen
ini bukan implementasi yang benar, ini tidak bekerja dengan string karakter tunggal "a". jika Anda mencoba string karakter tunggal, substr mengembalikan nilai boolean
anru
2
@ anru Manual menyatakan jika panjang string sama dengan parameter mulai, string kosong akan dikembalikan. Sebelum versi 7, falsedikembalikan. Jadi, Anda perlu memeriksa apakah mereka sama jika itu bukan perilaku yang Anda inginkan.
Terima kasih. Lihat pembaruan saya. Itu menyebabkan masalah bagi saya ketika menggunakan string yang diperbarui dalam permintaan SQL.
rybo111
6
Saya hanya mencoba $str[0] = '';solusinya dan tidak berhasil. namun itu baik jika Anda kemudian berencana menggunakan variabel misalnya untuk membandingkan >atau <itu tidak akan berhasil. Itu masih dianggap `` sebagai + `misalnya $str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
Ian
@Ian: Saya menemukan masalah yang sama saat mengambil catatan dari API menggunakan kata kunci, mencoba var_dump($keyword)yang menunjukkan panjang karakter sebelumnya .. lalu saya mencoba memotong kata kunci dan kemudian bekerja dengan baik var_dump(trim($keyword)).. Semoga ini bisa membantu seseorang .. :)
Syed Qarib
3
Ini tidak bekerja. Posisi "dihapus" diganti dengan byte nol, sehingga Anda mendapatkan "\ 0hello" alih-alih "halo".
Josef Kufner
1
Saya mendapatkan "Peringatan: Tidak dapat menetapkan string kosong ke offset tali" untuk $ str [0] = "";
Setelah tes lebih lanjut, saya tidak merekomendasikan menggunakan ini lagi. Itu menyebabkan masalah bagi saya ketika menggunakan string yang diperbarui dalam permintaan MySQL, dan mengubah untuk substrmemperbaiki masalah. Saya berpikir untuk menghapus jawaban ini, tetapi komentar menyarankan itu entah bagaimana lebih cepat sehingga seseorang mungkin menggunakannya untuk itu. Anda mungkin menemukan pemotongan string yang diperbarui menyelesaikan masalah panjang string.
Terkadang Anda tidak membutuhkan fungsi:
$str[0]='';
Sebagai contoh:
$str ='AHello';
$str[0]='';
echo $str;// 'Hello'
Metode ini memodifikasi string yang ada daripada membuat yang lain.
@ EnmanuilRusev bagaimana bisa begitu? Hanya ingin tahu apakah yang Anda maksud lebih cepat untuk mengetik atau berjalan lebih cepat.
rybo111
Maksud saya itu berjalan lebih cepat.
Emanuil Rusev
@ EmanuilRusev Saya akan tertarik jika Anda bisa memberikan beberapa statistik karena saya akan menambah jawabannya.
rybo111
1
Harus hati-hati dengan ini. Kode di bawah ini menghasilkan bool (false). $ foo = 'book'; $ bar = 'buku'; $ bar = substr ($ bar, 1); $ foo [0] = ''; var_dump ($ foo === $ bar);
thoughtrepo
8
Jawaban yang diterima:
$str = ltrim($str,':');
berfungsi tetapi akan menghapus banyak :ketika ada lebih dari satu di awal.
Memangkas kemunculan setiap kata dalam array dari awal dan akhir string + spasi putih dan opsional karakter tunggal tambahan sesuai trim normal ()
<?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"?>
yang ini tidak bekerja dengan string karakter tunggal: seperti "a"
anru
Anda benar =) Jadi, percayalah bahwa solusi yang mungkin adalah menguji sebelum hanya berisi satu karakter. Sebagai contoh: $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): $ str; Atau $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): ''; karena idenya adalah untuk menghapus karakter terakhir, jika Anda hanya punya satu ...: P
Jawaban:
Untuk menghapus setiap
:
dari awal string, Anda dapat menggunakan ltrim :sumber
:::::
. Terkadang perilaku ini tidak diinginkan.ltrim('prefixprefix_postfix', 'prefix')
hasil dalam'_postfix';
The
substr()
Fungsi mungkin akan membantu Anda di sini:String diindeks mulai dari 0, dan parameter fungsi ini mengambil cutstart. Jadi buat itu 1, dan char pertama hilang.
sumber
false
dikembalikan. Jadi, Anda perlu memeriksa apakah mereka sama jika itu bukan perilaku yang Anda inginkan.Gunakan substr :
sumber
Waktu Exec untuk 3 jawaban:
Hapus huruf pertama dengan mengganti kasing
Waktu pelaksanaan untuk 1.000.000 tes:
0.39602184295654
dtkHapus huruf pertama dengan substr ()
Waktu pelaksanaan untuk 1.000.000 tes:
5.153294801712
dtkHapus huruf pertama dengan ltrim ()
Waktu pelaksanaan untuk 1.000.000 tes:
5.2393000125885
dtkHapus huruf pertama dengan preg_replace ()
Waktu pelaksanaan untuk 1.000.000 tes:
6.8543920516968
dtksumber
$str[0] = '';
solusinya dan tidak berhasil. namun itu baik jika Anda kemudian berencana menggunakan variabel misalnya untuk membandingkan>
atau<
itu tidak akan berhasil. Itu masih dianggap `` sebagai + `misalnya$str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
var_dump($keyword)
yang menunjukkan panjang karakter sebelumnya .. lalu saya mencoba memotong kata kunci dan kemudian bekerja dengan baikvar_dump(trim($keyword))
.. Semoga ini bisa membantu seseorang .. :)Ini kodenya
Keluaran:
sumber
Untuk menghapus Karakter pertama dari string di PHP,
sumber
Lihat contoh manual PHP 3
catatan:
tidak akan berfungsi karena Anda tidak dapat membatalkan bagian dari string: -
sumber
Memperbarui
Setelah tes lebih lanjut, saya tidak merekomendasikan menggunakan ini lagi. Itu menyebabkan masalah bagi saya ketika menggunakan string yang diperbarui dalam permintaan MySQL, dan mengubah untuk
substr
memperbaiki masalah. Saya berpikir untuk menghapus jawaban ini, tetapi komentar menyarankan itu entah bagaimana lebih cepat sehingga seseorang mungkin menggunakannya untuk itu. Anda mungkin menemukan pemotongan string yang diperbarui menyelesaikan masalah panjang string.Terkadang Anda tidak membutuhkan fungsi:
Sebagai contoh:
Metode ini memodifikasi string yang ada daripada membuat yang lain.
sumber
Jawaban yang diterima:
berfungsi tetapi akan menghapus banyak
:
ketika ada lebih dari satu di awal.akan menghapus karakter apa pun dari awal.
Namun,
bekerja dengan sempurna.
sumber
Anda dapat menggunakan fungsi sbstr ()
sumber
Memangkas kemunculan setiap kata dalam array dari awal dan akhir string + spasi putih dan opsional karakter tunggal tambahan sesuai trim normal ()
sumber
Kode ini berfungsi dengan baik untuk saya.
Mungkin, berkontribusi juga dengan jawaban.
sumber
gunakan fungsi mb_substr
sumber