Tôi đã có một chuỗi và tôi muốn có được mọi thứ sau một giá trị nhất định. Chuỗi luôn bắt đầu với một tập hợp các số và sau đó là một dấu gạch dưới. Tôi muốn lấy phần còn lại của chuỗi sau khi gạch dưới. Vì vậy, ví dụ nếu tôi có các chuỗi sau và những gì tôi muốn trả lại:
"123_String" -> "String"
"233718_This_is_a_string" -> "This_is_a_string"
"83_Another Example" -> "Another Example"
Làm thế nào tôi có thể đi làm một cái gì đó như thế này?
hỏi ngày 10 tháng 7 năm 2012 lúc 1:35Jul 10, 2012 at 1:35
user1048676user1048676user1048676
9,51625 Huy hiệu vàng81 Huy hiệu bạc118 Huy hiệu đồng25 gold badges81 silver badges118 bronze badges
1
$data = "123_String";
$whatIWant = substr[$data, strpos[$data, "_"] + 1];
echo $whatIWant;
5 tìm thấy phần bù của dấu gạch dưới, sau đó cơ sở lấy mọi thứ từ chỉ mục đó cộng với 1, trở đi.$data = "123_String";
$whatIWant = substr[$data, strpos[$data, "_"] + 1];
echo $whatIWant;
Nếu bạn cũng muốn kiểm tra xem ký tự dấu gạch dưới [
$data = "123_String";
$whatIWant = substr[$data, strpos[$data, "_"] + 1];
echo $whatIWant;
6] có tồn tại trong chuỗi của bạn trước khi cố gắng lấy nó hay không, bạn có thể sử dụng như sau:if [[$pos = strpos[$data, "_"]] !== FALSE] {
$whatIWant = substr[$data, $pos+1];
}
Kenorb
Phù bằng vàng 146K7777 gold badges658 silver badges715 bronze badges
Đã trả lời ngày 10 tháng 7 năm 2012 lúc 1:38Jul 10, 2012 at 1:38
9
$data = "123_String";
$whatIWant = substr[$data, strpos[$data, "_"] + 1];
echo $whatIWant;
7 là một chức năng bị bỏ qua cho loại điều này. Nó có nghĩa là khá nhanh.$s = '233718_This_is_a_string';
$firstPart = strtok[ $s, '_' ];
$allTheRest = strtok[ '' ];
Chuỗi trống như thế này sẽ buộc phần còn lại của chuỗi được trả về.
NB Nếu không có gì sau khi '_', bạn sẽ nhận được giá trị
$data = "123_String";
$whatIWant = substr[$data, strpos[$data, "_"] + 1];
echo $whatIWant;
8 cho $data = "123_String";
$whatIWant = substr[$data, strpos[$data, "_"] + 1];
echo $whatIWant;
9, như đã nêu trong tài liệu, phải được kiểm tra với ===, để phân biệt với các giá trị giả khác.
Đã trả lời ngày 24 tháng 11 năm 2017 lúc 8:11Nov 24, 2017 at 8:11
Mike gặm nhấm gặm nhấmmike rodent
Huy hiệu vàng 13K1193 Huy hiệu bạc135 Huy hiệu đồng11 gold badges93 silver badges135 bronze badges
3
Đây là phương pháp bằng cách sử dụng
if [[$pos = strpos[$data, "_"]] !== FALSE] {
$whatIWant = substr[$data, $pos+1];
}
0:$text = explode['_', '233718_This_is_a_string', 2][1]; // Returns This_is_a_string
or:
$text = end[[explode['_', '233718_This_is_a_string', 2]]];
Bằng cách chỉ định
if [[$pos = strpos[$data, "_"]] !== FALSE] {
$whatIWant = substr[$data, $pos+1];
}
1 cho tham số if [[$pos = strpos[$data, "_"]] !== FALSE] {
$whatIWant = substr[$data, $pos+1];
}
2 trong if [[$pos = strpos[$data, "_"]] !== FALSE] {
$whatIWant = substr[$data, $pos+1];
}
3, nó trả về mảng với 2 phần tử tối đa được phân tách bằng dấu phân cách chuỗi. Trả về phần tử thứ 2 [if [[$pos = strpos[$data, "_"]] !== FALSE] {
$whatIWant = substr[$data, $pos+1];
}
4], sẽ cung cấp phần còn lại của chuỗi.Dưới đây là một liner khác bằng cách sử dụng
if [[$pos = strpos[$data, "_"]] !== FALSE] {
$whatIWant = substr[$data, $pos+1];
}
5 [như đề xuất của @FLU]:$needle = '233718_This_is_a_string';
$text = substr[$needle, [strpos[$needle, '_'] ?: -1] + 1]; // Returns This_is_a_string
Wadih M.
12.2k7 Huy hiệu vàng43 Huy hiệu bạc55 Huy hiệu Đồng7 gold badges43 silver badges55 bronze badges
Đã trả lời ngày 23 tháng 7 năm 2017 lúc 14:56Jul 23, 2017 at 14:56
Kenorbkenorbkenorb
Phù bằng vàng 146K7777 gold badges658 silver badges715 bronze badges
1
Đã trả lời ngày 10 tháng 7 năm 2012 lúc 1:38
$string = 'filename.jpg';
$extension = strrchr[ $string, '.']; //returns "jpg"
$data = "123_String";
$whatIWant = substr[$data, strpos[$data, "_"] + 1];
echo $whatIWant;
7 là một chức năng bị bỏ qua cho loại điều này. Nó có nghĩa là khá nhanh.Jul 23, 2020 at 13:03
Chuỗi trống như thế này sẽ buộc phần còn lại của chuỗi được trả về.Pinonirvana
NB Nếu không có gì sau khi '_', bạn sẽ nhận được giá trị
8 cho $data = "123_String";
$whatIWant = substr[$data, strpos[$data, "_"] + 1];
echo $whatIWant;
9, như đã nêu trong tài liệu, phải được kiểm tra với ===, để phân biệt với các giá trị giả khác.1 gold badge8 silver badges10 bronze
badges$data = "123_String";
$whatIWant = substr[$data, strpos[$data, "_"] + 1];
echo $whatIWant;
1
Đã trả lời ngày 24 tháng 11 năm 2017 lúc 8:11
$str = '233718_This_is_a_string';
echo ltrim[strstr[$str, '_'], '_']; // This_is_a_string
Mike gặm nhấm gặm nhấm
echo ltrim[$str, '0..9_']; // This_is_a_string
Huy hiệu vàng 13K1193 Huy hiệu bạc135 Huy hiệu đồng
Đây là phương pháp bằng cách sử dụng
if [[$pos = strpos[$data, "_"]] !== FALSE] {
$whatIWant = substr[$data, $pos+1];
}
0:Dec 8, 2018 at 0:44
Bằng cách chỉ định
if [[$pos = strpos[$data, "_"]] !== FALSE] {
$whatIWant = substr[$data, $pos+1];
}
1 cho tham số if [[$pos = strpos[$data, "_"]] !== FALSE] {
$whatIWant = substr[$data, $pos+1];
}
2 trong if [[$pos = strpos[$data, "_"]] !== FALSE] {
$whatIWant = substr[$data, $pos+1];
}
3, nó trả về mảng với 2 phần tử tối đa được phân tách bằng dấu phân cách chuỗi. Trả về phần tử thứ 2 [if [[$pos = strpos[$data, "_"]] !== FALSE] {
$whatIWant = substr[$data, $pos+1];
}
4], sẽ cung cấp phần còn lại của chuỗi.nggitDưới đây là một liner khác bằng cách sử dụng
5 [như đề xuất của @FLU]:7 silver
badges8 bronze badgesif [[$pos = strpos[$data, "_"]] !== FALSE] {
$whatIWant = substr[$data, $pos+1];
}
Wadih M.
Query:
$data = "123_String";
$whatIWant = substr[$data, strpos[$data, "_"] + 1];
echo $whatIWant;
0Output:
12.2k7 Huy hiệu vàng43 Huy hiệu bạc55 Huy hiệu Đồng
Đã trả lời ngày 23 tháng 7 năm 2017 lúc 14:56Feb 27, 2018 at 9:54
KenorbkenorbAdy
Tôi sử dụng strrchr []. Chẳng hạn để tìm phần mở rộng của tệp tôi sử dụng chức năng này:1 silver badge2 bronze badges
$data = "123_String";
$whatIWant = substr[$data, strpos[$data, "_"] + 1];
echo $whatIWant;
1Đã trả lời ngày 23 tháng 7 năm 2020 lúc 13:03
$data = "123_String";
$whatIWant = substr[$data, strpos[$data, "_"] + 1];
echo $whatIWant;
2PinonirvanapinonirvanaOct 19, 2019 at 21:25
8201 Huy hiệu vàng8 Huy hiệu bạc10 Huy hiệu đồng
$data = "123_String";
$whatIWant = substr[$data, strpos[$data, "_"] + 1];
echo $whatIWant;
3Một cách đơn giản khác, sử dụng strchr [] hoặc strstr []:Oct 4, 2021 at 2:54
Trong trường hợp của bạn, có thể một mình ltrim [] sẽ đủ:arafatgazi
Nhưng chỉ khi phần phù hợp của chuỗi [sau _] không bắt đầu với các số, nếu không nó cũng sẽ được cắt.1 silver badge5 bronze badges
Đã trả lời ngày 8 tháng 12 năm 2018 lúc 0:44
$data = "123_String";
$whatIWant = substr[$data, strpos[$data, "_"] + 1];
echo $whatIWant;
4NggitnggitDec 24, 2021 at 11:20
5717 Huy hiệu bạc8 Huy hiệu ĐồngGerard de Visser
Nếu bất cứ ai cần trích xuất phần đầu tiên của chuỗi thì có thể thử,9 gold badges48 silver badges57 bronze badges