cara menghapus kata pertama dari string php

Saya ingin menghapus kata pertama dari string menggunakan PHP. Mencoba mencari tetapi tidak dapat menemukan jawaban yang dapat saya pahami.

misal: "Tank Top Putih" sehingga menjadi "Tank Top"

Terima kasih


person Monkeyalan    schedule 25.07.2011    source sumber
comment
Maksudnya karakter sebelum spasi pertama?   -  person PeeHaa    schedule 26.07.2011


Jawaban (5)


Tidak perlu meledakkan atau memanipulasi array, Anda dapat menggunakan fungsi strstr:

echo strstr("White Tank Top"," ");
//Tank Top

PEMBARUAN: Terima kasih kepada @Sid Untuk menghapus spasi ekstra yang dapat Anda lakukan:

echo substr(strstr("White Tank Top"," "), 1);
person amosrivera    schedule 25.07.2011
comment
Ini lebih baik daripada jawaban manipulasi array, namun ini akan meninggalkan karakter spasi juga. Ini dapat dihentikan dengan melakukan echo substr(strstr(White Tank Top, ), 1); - person Sid; 26.07.2011
comment
+1 untuk kesederhanaan, saya selalu lupa tentang strtr. Tadinya akan mengetik 3 baris menggunakan strpos + substr ketika saya melihat jawaban Anda. Tambahkan ltrim jika ada beberapa spasi dan Anda berwarna emas. - person Fanis Hatzidakis; 26.07.2011
comment
@Sid spasi di awal maksudmu? saya baru saja memeriksanya dan berfungsi dengan baik bagi saya, dapatkah Anda memverifikasinya? - person amosrivera; 26.07.2011
comment
@Fanis saya benar-benar mengerti, dengan begitu banyak fungsi berbeda untuk manipulasi string di php mudah untuk dilupakan. - person amosrivera; 26.07.2011
comment
@amosrivera seperti yang dikatakan @Sid akan menyertakan ruang yang cocok. Anda tidak akan melihatnya dengan mudah dengan menggemakan halaman web tetapi lakukan strlen atau jalankan di debugger dan Anda akan menemukannya :) - person Fanis Hatzidakis; 26.07.2011
comment
@Sid @Fanis strlen menunjukkan ruang putih yang menarik, tambahkan solusi Anda pada jawabannya, terima kasih! - person amosrivera; 26.07.2011

Anda dapat menggunakan fungsi preg_replace dengan regex ^(\w+\s) yang akan cocok dengan kata pertama dari sebuah string:

$str = "White Tank Top";
$str = preg_replace("/^(\w+\s)/", "", $str);
var_dump($str); // -> string(8) "Tank Top"
person Alex    schedule 27.05.2016

function remove_word($sentence)
{
    $exp = explode(' ', $sentence);
    $removed_words = array_shift($exp);
    if(count($exp)>1){
        $w = implode(' ', $exp);
    }else{
        $w = $exp[0];
    }
    return $w;
}

Coba fungsi ini, saya harap ini berhasil untuk Anda.

person Chirag Pipariya    schedule 11.02.2015

Jika Anda tidak dijamin memiliki spasi di string Anda, berhati-hatilah dalam memilih teknik yang tidak akan gagal dalam kasus seperti itu.

Jika menggunakan explode() pastikan untuk membatasi ledakan untuk efisiensi terbaik.

Demonstrasi:

$strings = ["White", "White Tank", "White Tank Top"];
foreach ($strings as $string) {
    echo "\n{$string}:";
    echo "\n-\t" , substr($string, 1 + (strpos($string, ' ') ?: -1));

    $explodeOnce = explode(' ', $string, 2);
    echo "\n-\t" , end($explodeOnce);              

    echo "\n-\t" , substr(strstr($string, " "), 1);

    echo "\n-\t" , ltrim(strstr($string, " "));

    echo "\n-\t" , preg_replace('~^\S+\s~', '', $string);
}

Keluaran:

White:
-   White
-   White
-                       // strstr() returned false
-                       // strstr() returned false  
-   White
White Tank:
-   Tank
-   Tank
-   Tank
-   Tank
-   Tank
White Tank Top:
-   Tank Top
-   Tank Top
-   Tank Top
-   Tank Top
-   Tank Top

Preferensi saya adalah teknik regex karena stabil dalam semua kasus di atas dan merupakan pemanggilan fungsi tunggal. Perhatikan bahwa grup tangkapan tidak diperlukan karena pencocokan string penuh sedang diganti. ^ cocok dengan awal string, \S+ cocok dengan satu atau lebih karakter non-spasi, dan \s cocok dengan satu karakter spasi.

person mickmackusa    schedule 21.11.2019

person    schedule
comment
bisakah Anda juga menyingkatnya menjadi return implode(' ', array_shift(explode(' ', $sentence)));? saya tidak pernah yakin dengan php. - person Patrick Perini; 26.07.2011
comment
Solusi ini memakan banyak memori. Jika string memiliki banyak spasi, array akan menjadi besar. solusi amosrivera jauh lebih baik (walaupun tidak cukup lengkap karena meninggalkan karakter spasi juga). - person Sid; 26.07.2011
comment
@Patrick Perini: tidak - array_shift() mengembalikan elemen pertama dalam array - bukan array yang dimodifikasi - person symcbean; 26.07.2011
comment
@Sid: pertama, jawaban amosrivera berbeda secara semantik (pertimbangkan apa yang terjadi dengan string yang tidak mengandung spasi) juga saya tidak akan menyebut ini sebagai babi memori - saya berharap ini menggunakan lebih banyak memori daripada jawaban amosrivera - tetapi tanpa menguji setiap metode yang saya bisa Saya tidak tahu mana yang memiliki dampak efektif lebih besar pada sistem. - person symcbean; 26.07.2011
comment
Hog atau tidak, jawaban ini tidak ada penjelasannya. Intinya adalah, cuplikan Anda melakukan terlalu banyak ledakan. Silakan lihat ledakan terbatas saya. - person mickmackusa; 21.11.2019