2012-01-10 33 views
6

tôi có các chuỗi với cấu trúc folowing:Nhận chuỗi đầu tiên trước dấu phân cách?

7_string_12 
7_string2_122 
7_string3_1223 

Làm thế nào tôi có thể nhận được chuỗi trước thứ hai "_"?

Tôi muốn kết quả cuối cùng của tôi là:

7_string 
7_string2 
7_string3 

Tôi đang sử dụng phát nổ ('_', $ string) và kết hợp hai giá trị đầu tiên, nhưng kịch bản của tôi là rất chậm!

Trả lời

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

vang

7_string 

có chuyện gì vào lúc bắt đầu của chuỗi

+0

Cảm ơn! Tôi có một câu hỏi khác! Làm thế nào để làm cho mã này hiển thị cho tôi kết quả sau: string? Đó là để hiển thị chuỗi giữa các dấu phân cách. Cảm ơn trước ! – dido

+0

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

+0

Xin lưu ý,' substr ($ str, 0, strrpos ($ str, '_')) 'là OK nếu đầu vào không giống' 7_string2_abc_123'. Bởi vì đầu ra sẽ là '7_string2_abc'. – yasouser

0

Nếu nó luôn luôn bắt đầu với 7_ bạn có thể thử này:

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

Các strpos() tìm kiếm _ đầu tiên bắt đầu từ ký tự 3 (= s từ chuỗi). Sau đó, bạn sử dụng substr() để chọn toàn bộ chuỗi bắt đầu từ ký tự đầu tiên đến ký tự được trả về bởi strpos().

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

Giả định rằng mã thông báo đầu tiên luôn là một ký tự dài có một chút nguy hiểm. –

Các vấn đề liên quan