2010-09-22 13 views
36

W PHP, jaki jest najprostszy sposób zwrócenia części ciągu przed pierwszym wystąpieniem określonego znaku?Zwróć część ciągu przed pierwszym wystąpieniem znaku w php

Na przykład, jeśli mam ciąg ...

„Szybki brązowy foxed przeskoczył itp itd.”

... a ja filtrowanie znak spacji (”„), funkcja wróci "the"

Dzięki!

+0

może się okazać [ 's ($ str) -> beforeFirst (” „)'] (https : //github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L389) pomocne, jak można znaleźć w [tej samodzielnej bibliotece] (https://github.com/delight-im/ PHP-Str). – caw

Odpowiedz

50

Ty mógłby to zrobić:

$string = 'The quick brown fox jumped over the lazy dog'; 
$substring = substr($string, 0, strpos($string, ' ')); 

Ale lubię to lepiej:

list($firstWord) = explode(' ', $string); 
+0

Czy to nie spowoduje błędów? Myślałem, że link musi mieć pasujący zestaw vairable (lub pusty przecinek) dla liczby zmiennych w tablicy, którą eksplodujesz? – Alex

+1

w przypadku, gdy chcesz zwrócić zmienną zamiast jej przypisywania 'return array_shift (explode ('', $ string));' –

+2

Jeśli ciąg znaków (tutaj spacja) nie zostanie znaleziony, pierwszy zwraca pusty ciąg znaków. Drugi zwraca cały ciąg. – Progrock

18

strstr() Znajdź pierwsze wystąpienie napisu. Zwraca część ciągu stogu siana rozpoczynając od pierwszego wystąpienia igły i kończąc na końcu stogu siana.

Trzeci parametr: Jeśli TRUE, strstr() zwraca część stogu siana przed pierwszym pojawieniem się igły (bez igły).

$haystack = 'The quick brown foxed jumped over the etc etc.'; 
$needle = ' '; 
echo strstr($haystack, $needle, true); 

Drukuje The.

+0

Próbowałem tego kodu i otrzymałem ostrzeżenie:" Zła liczba parametrów dla strstr() ". Powodem jest to, że ten kod działa tylko w PHP 5.3.0. Używam wcześniejszej wersji PHP. – matsolof

+1

Jeśli igła nie zostanie znaleziona, zwróci wartość false. Czego można się spodziewać. Więc osobiście to wydaje się lepszą odpowiedzią. W wielu innych odpowiedziach prawdopodobnie będziesz musiał sprawdzić, czy ciąg zawiera token, w przeciwnym razie uzyskasz nieprzewidywalne wyniki. O ile oczywiście to nie jest dane. – Progrock

+0

Czyste i proste z dobrymi konwencjami nazewnictwa dla jasnego zrozumienia. – Kray

4

Jak o tym:

$string = "The quick brown fox jumped over the etc etc."; 

$splitter = " "; 

$pieces = explode($splitter, $string); 

echo $pieces[0]; 
+0

Jeśli splitter nie zostanie znaleziony, zwraca cały ciąg. – Progrock

+0

@ Prograf, co jest nie tak? Czego jeszcze chcesz? – Soaku

+0

@Soaku, to tylko obserwacja. – Progrock

73

dla Googlersami: strtok jest lepsze dla tego

echo strtok("The quick brown fox", ' '); 
+5

Dla mnie to najlepsze rozwiązanie. – matsolof

+0

Najlepsze rozwiązanie [2]! –

+1

Tylko downer o strtok, jest jeśli token nie zostanie znaleziony, zwraca cały ciąg. – Progrock

Powiązane problemy