Zauważ, że lrtim usunie wszystko :::::. Czasami nie jest to pożądane zachowanie.
KR
5
zwróć uwagę, że jest to przeznaczone tylko dla pojedynczych znaków. ltrim będzie przyciąć wszystkie znaki w podanym ciągu znaków: ltrim('prefixprefix_postfix', 'prefix')wyniki w'_postfix';
Cody Django
556
substr()Funkcja będzie prawdopodobnie pomóc tutaj:
$str = substr($str,1);
Łańcuchy są indeksowane od 0, a ten drugi parametr funkcji uruchamia cutstart. Więc zrób 1, a pierwszy znak zniknie.
Uważaj na Unicode. Jeśli masz do czynienia z dowolnym ciągiem znaków (np. „Ål <- danish for eel”), powinieneś użyć mb_substr i określić kodowanie.
Thomas Jensen,
nie jest to poprawna implementacja, nie działa z ciągiem znaków „a”. jeśli spróbujesz łańcucha
jednoznakowego
2
@anru Instrukcja podaje, że jeśli długość łańcucha jest równa parametrowi początkowemu, zostanie zwrócony pusty ciąg. Przed wersją 7 falsezostał zwrócony. Musisz więc sprawdzić, czy są równe, jeśli nie jest to pożądane zachowanie.
Dzięki. Zobacz jednak moją aktualizację. To spowodowało problem podczas używania zaktualizowanego ciągu w zapytaniu SQL.
rybo111
6
Właśnie wypróbowałem $str[0] = '';rozwiązanie i nie zadziałało. robi to jednak dobrze, jeśli planujesz na przykład użyć zmiennej do porównania, bo >inaczej <nie zadziała. Nadal liczy się jako `` jak + '', na przykład $str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
Ian
@Ian: Natknąłem się na ten sam problem podczas pobierania rekordów z interfejsu API za pomocą słowa kluczowego. Próbowałem, var_dump($keyword)który wyświetlał poprzednią długość znaku. Potem spróbowałem przyciąć słowo kluczowe, a potem zadziałało var_dump(trim($keyword)). Mam nadzieję, że to komuś pomoże :)
Syed Qarib,
3
To nie działa. Pozycja „usunięta” jest zastąpiona bajtem zerowym, więc zamiast „cześć” pojawia się „\ 0hello”.
Josef Kufner
1
Pojawia się komunikat „Ostrzeżenie: nie można przypisać pustego łańcucha do przesunięcia łańcucha” dla $ str [0] = "";
Po dalszych testach nie polecam już tego używać. To spowodowało problem podczas używania zaktualizowanego ciągu w zapytaniu MySQL i zmiany w celu substrrozwiązania problemu. Myślałem o usunięciu tej odpowiedzi, ale komentarze sugerują, że jest ona jakoś szybsza, więc ktoś może ją wykorzystać. Może się okazać, że przycięcie zaktualizowanego łańcucha rozwiąże problemy z długością łańcucha.
Czasami nie potrzebujesz funkcji:
$str[0]='';
Na przykład:
$str ='AHello';
$str[0]='';
echo $str;// 'Hello'
Ta metoda modyfikuje istniejący ciąg zamiast tworzyć inny.
@EmanuilRusev jak to zrobić? Ciekawe, czy masz na myśli szybsze pisanie lub szybsze działanie.
rybo111
Mam na myśli, że działa szybciej.
Emanuil Rusev
@EmanuilRusev Byłbym zainteresowany, gdybyś mógł podać statystyki, które dodam do odpowiedzi.
rybo111
1
Uważaj na to. Poniższy kod wyświetla wynik bool (false). $ foo = „book”; $ bar = „książka”; $ bar = substr ($ bar, 1); $ foo [0] = ''; var_dump ($ foo === $ bar);
thinkrepo
8
Akceptowana odpowiedź:
$str = ltrim($str,':');
działa, ale usunie wiele, :jeśli na początku jest więcej niż jeden.
Przycina wystąpienia każdego słowa w tablicy od początku i końca łańcucha + białych znaków i opcjonalnie dodatkowych pojedynczych znaków, jak w przypadku zwykłego przycinania ()
<?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"?>
Masz rację =) Więc uwierz, że możliwym rozwiązaniem byłoby przetestowanie, zanim będzie zawierała tylko jedną postać. Na przykład: $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): $ str; Lub $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): ''; ponieważ chodzi o to, aby usunąć ostatnią postać, jeśli masz tylko jedną ...: P
Odpowiedzi:
Aby usunąć każdy
:
z początku łańcucha, możesz użyć ltrim :źródło
:::::
. Czasami nie jest to pożądane zachowanie.ltrim('prefixprefix_postfix', 'prefix')
wyniki w'_postfix';
substr()
Funkcja będzie prawdopodobnie pomóc tutaj:Łańcuchy są indeksowane od 0, a ten drugi parametr funkcji uruchamia cutstart. Więc zrób 1, a pierwszy znak zniknie.
źródło
false
został zwrócony. Musisz więc sprawdzić, czy są równe, jeśli nie jest to pożądane zachowanie.Użyj substr :
źródło
Czas wykonania dla 3 odpowiedzi:
Usuń pierwszą literę, zastępując obudowę
Czas wykonania dla 1.000.000 testów:
0.39602184295654
sekUsuń pierwszą literę z substr ()
Czas wykonania dla 1.000.000 testów:
5.153294801712
sekUsuń pierwszą literę za pomocą ltrim ()
Czas wykonania dla 1.000.000 testów:
5.2393000125885
sekUsuń pierwszą literę za pomocą preg_replace ()
Czas wykonania dla 1.000.000 testów:
6.8543920516968
sekźródło
$str[0] = '';
rozwiązanie i nie zadziałało. robi to jednak dobrze, jeśli planujesz na przykład użyć zmiennej do porównania, bo>
inaczej<
nie zadziała. Nadal liczy się jako `` jak + '', na przykład$str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
var_dump($keyword)
który wyświetlał poprzednią długość znaku. Potem spróbowałem przyciąć słowo kluczowe, a potem zadziałałovar_dump(trim($keyword))
. Mam nadzieję, że to komuś pomoże :)Oto kod
Wynik:
źródło
Aby usunąć pierwszy znak ciągu znaków w PHP,
źródło
Zobacz podręcznik PHP 3 przykład
Uwaga:
nie będzie działać, ponieważ nie można rozbroić części ciągu: -
źródło
Aktualizacja
Po dalszych testach nie polecam już tego używać. To spowodowało problem podczas używania zaktualizowanego ciągu w zapytaniu MySQL i zmiany w celu
substr
rozwiązania problemu. Myślałem o usunięciu tej odpowiedzi, ale komentarze sugerują, że jest ona jakoś szybsza, więc ktoś może ją wykorzystać. Może się okazać, że przycięcie zaktualizowanego łańcucha rozwiąże problemy z długością łańcucha.Czasami nie potrzebujesz funkcji:
Na przykład:
Ta metoda modyfikuje istniejący ciąg zamiast tworzyć inny.
źródło
Akceptowana odpowiedź:
działa, ale usunie wiele,
:
jeśli na początku jest więcej niż jeden.usunie dowolną postać od początku.
Jednak,
działa świetnie.
źródło
możesz użyć funkcji sbstr ()
źródło
Przycina wystąpienia każdego słowa w tablicy od początku i końca łańcucha + białych znaków i opcjonalnie dodatkowych pojedynczych znaków, jak w przypadku zwykłego przycinania ()
źródło
Kod działa dobrze dla mnie.
Może również udzielić odpowiedzi.
źródło
użyj funkcji mb_substr
źródło