Làm cách nào tôi có thể phát nổ một chuỗi bằng một hoặc nhiều khoảng trắng hoặc tab?
Thí dụ:
A B C D
Tôi muốn làm cho điều này một mảng.
Làm cách nào tôi có thể phát nổ một chuỗi bằng một hoặc nhiều khoảng trắng hoặc tab?
Thí dụ:
A B C D
Tôi muốn làm cho điều này một mảng.
Câu trả lời:
$parts = preg_split('/\s+/', $str);
$parts = preg_split('/\s+/', $str, -1, PREG_SPLIT_NO_EMPTY);
Tác giả đã yêu cầu phát nổ, để bạn có thể sử dụng phát nổ như thế này
$resultArray = explode("\t", $inputString);
Lưu ý: bạn phải sử dụng báo giá kép, không đơn lẻ.
Tôi nghĩ bạn muốn preg_split
:
$input = "A B C D";
$words = preg_split('/\s+/', $input);
var_dump($words);
thay vì sử dụng explode, hãy thử preg_split: http://www.php.net/manual/en/feft.preg-split.php
Để chiếm không gian chiều rộng đầy đủ, chẳng hạn như
full width
bạn có thể mở rộng câu trả lời của Bens cho điều này:
$searchValues = preg_split("@[\s+ ]@u", $searchString);
Nguồn:
(Tôi không có đủ danh tiếng để đăng bình luận, vì vậy tôi đã viết bài này như một câu trả lời.)
Các câu trả lời được cung cấp bởi những người khác (Ben James) là khá tốt và tôi đã sử dụng chúng. Như user889030 chỉ ra, phần tử mảng cuối cùng có thể trống. Trên thực tế, các phần tử mảng đầu tiên và cuối cùng có thể trống. Mã dưới đây giải quyết cả hai vấn đề.
# Split an input string into an array of substrings using any set
# whitespace characters
function explode_whitespace($str) {
# Split the input string into an array
$parts = preg_split('/\s+/', $str);
# Get the size of the array of substrings
$sizeParts = sizeof($parts);
# Check if the last element of the array is a zero-length string
if ($sizeParts > 0) {
$lastPart = $parts[$sizeParts-1];
if ($lastPart == '') {
array_pop($parts);
$sizeParts--;
}
# Check if the first element of the array is a zero-length string
if ($sizeParts > 0) {
$firstPart = $parts[0];
if ($firstPart == '')
array_shift($parts);
}
}
return $parts;
}
Explode string by one or more spaces or tabs in php example as follow:
<?php
$str = "test1 test2 test3 test4";
$result = preg_split('/[\s]+/', $str);
var_dump($result);
?>
/** To seperate by spaces alone: **/
<?php
$string = "p q r s t";
$res = preg_split('/ +/', $string);
var_dump($res);
?>
@OP không thành vấn đề, bạn chỉ có thể tách ra trên một không gian có tiếng nổ. Cho đến khi bạn muốn sử dụng các giá trị đó, lặp lại các giá trị đã nổ và loại bỏ các khoảng trống.
$str = "A B C D";
$s = explode(" ",$str);
foreach ($s as $a=>$b){
if ( trim($b) ) {
print "using $b\n";
}
}