2012-01-10 11 views
6

mam struny z folowing strukturze:Pobierz pierwszy ciąg przed separatorem?

7_string_12 
7_string2_122 
7_string3_1223 

Jak mogę uzyskać ciąg przed sekunda "_"?

chcę mój wynik końcowy będzie:

7_string 
7_string2 
7_string3 

Używam explode ('_', $ string) i połączyć dwie pierwsze wartości, ale mój scenariusz był bardzo powolny!

Odpowiedz

8
$str = '7_string_12'; 
echo substr($str,0,strrpos($str,'_')); 

echa

7_string 

bez względu na to, co się na początku łańcucha

+0

Dzięki! Mam kolejne pytanie! Jak zrobić ten kod, aby pokazać mi następujący wynik: ciąg znaków? To pokazuje łańcuch między separatorami. Z góry dziękuję ! – dido

+0

@dilyan_kn 'preg_match ('/ _ (\ S +) _ /', $ str, $ m); echo $ m [1]; ' – k102

+0

Uwaga:' substr ($ str, 0, strrpos ($ str, '_')) 'jest OK, jeśli dane wejściowe nie przypominają' 7_string2_abc_123'. Ponieważ wyjście będzie "7_string2_abc". – yasouser

0

Jeśli to zawsze zaczyna się 7_ można spróbować to:

$string = substr($text, 0, strpos($text, '_', 2)); 

The strpos() wyszukuje pierwszego _ zaczynającego się od znaku 3 (= s od ciągu). Następnie użyj substr(), aby wybrać cały łańcuch, począwszy od pierwszego znaku do znaku zwróconego przez strpos().

1
$s1 = '7_string_12'; 
echo substr($s1, 0, strpos($s1, '_', 2)); 
+0

Założenie, że pierwszy token ma zawsze długość jednego znaku, jest nieco niebezpieczne. –

Powiązane problemy