2013-04-25 33 views
17

Tôi có một chuỗi như thế này:tách ra ở không gian đầu tiên trong một chuỗi

đỏ vàng xanh

và tôi muốn để có được một mảng như thế này:

Mảng ( [0] => đỏ [1] => màu vàng xanh)

cách tách tại không gian đầu tiên trong chuỗi? mã của tôi không hoạt động

<?php 
$str = "red yellow blue"; 
$preg = preg_split("/^\s+/", $str); 
print_r($preg); 
?> 

hãy giúp tôi.

Trả lời

48

Sử dụng explode với một giới hạn:

$array = explode(' ', $string, 2); 

Chỉ cần một mặt lưu ý: đối số thứ 3 của preg_split là giống như một cho explode, vì vậy bạn có thể viết mã của bạn như thế này cũng như:

$array = preg_split('#\s+#', $string, 2); 

Tài liệu tham khảo:

PHP: explode

PHP: preg_split

+0

Đây là một câu trả lời hay với tham chiếu (ví dụ: liên kết đến hướng dẫn) –

+2

Đối với tò mò, tham số thứ ba là số lượng tối đa các phần tử trong mảng và phần tử cuối cùng sẽ lấy mọi thứ còn lại. – Andrew

3

Bạn có thể sử dụng chức năng nổ như thế này

print_r(explode(' ', $str, 2)); 

Nó sẽ thiết lập một giới hạn. Kiểm tra thêm về nó here

4
<?php 
$string = "red yellow blue"; 
$result = explode(" ", $string, 2); 
print_r($result); 
?> 

chỉ nổ nó

2

Bạn có thể sử dụng explode, nhưng nếu bạn không chắc chắn 100% bạn sẽ có cùng # không gian (nổ) mọi thời gian, bạn có thể sử dụng ltrim để loại bỏ các từ đầu tiên và không gian

<?php 
$full='John Doe Jr.'; 
$full1=explode(' ', $full); 
$first=$full1[0]; 
$rest=ltrim($full, $first.' '); 
echo "$first + $rest"; 
?> 
-3

Bạn có thể sử dụng explode theo cách này:

$stringText = "red yellow blue"; 
    $colours = explode(" ", $stringText); 
    echo $colours[0]; //red 
    echo $colours[1]; //yellow 
    echo $colours[2]; //blue 

Bạn cũng có thể nhận được tất cả các thành phần của $ màu bởi vòng lặp foreach, nhưng trong trường hợp này phát nổ là tốt hơn

+1

Điều này sẽ chia chuỗi tại không gian _every_ - câu hỏi yêu cầu phân tách tại không gian _first_. – Frits

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