ฉันจะระเบิดสตริงด้วยช่องว่างหรือแท็บอย่างน้อยหนึ่งรายการได้อย่างไร
ตัวอย่าง:
A B C D
ฉันต้องการทำให้อาร์เรย์เป็นแบบนี้
ฉันจะระเบิดสตริงด้วยช่องว่างหรือแท็บอย่างน้อยหนึ่งรายการได้อย่างไร
ตัวอย่าง:
A B C D
ฉันต้องการทำให้อาร์เรย์เป็นแบบนี้
คำตอบ:
$parts = preg_split('/\s+/', $str);
$parts = preg_split('/\s+/', $str, -1, PREG_SPLIT_NO_EMPTY);
หากต้องการคั่นด้วยแท็บ:
$comp = preg_split("/[\t]/", $var);
หากต้องการคั่นด้วยช่องว่าง / แท็บ / บรรทัดใหม่:
$comp = preg_split('/\s+/', $var);
หากต้องการแยกช่องว่างโดยลำพัง:
$comp = preg_split('/ +/', $var);
งานนี้:
$string = 'A B C D';
$arr = preg_split('/[\s]+/', $string);
ผู้เขียนขอระเบิดคุณสามารถใช้ระเบิดได้เช่นนี้
$resultArray = explode("\t", $inputString);
หมายเหตุ: คุณต้องใช้เครื่องหมายคำพูดคู่ไม่ใช่แบบเดี่ยว
ฉันคิดว่าคุณต้องการpreg_split
:
$input = "A B C D";
$words = preg_split('/\s+/', $input);
var_dump($words);
แทนที่จะใช้ explode ให้ลอง preg_split: http://www.php.net/manual/en/function.preg-split.php
เพื่อที่จะบัญชีสำหรับพื้นที่เต็มความกว้างเช่น
full width
คุณสามารถขยายคำตอบให้กับ Bens:
$searchValues = preg_split("@[\s+ ]@u", $searchString);
แหล่งที่มา:
(ฉันมีชื่อเสียงไม่มากพอที่จะโพสต์ความคิดเห็นดังนั้นฉันจึงเขียนนี่เป็นคำตอบ)
คำตอบที่ได้รับจากคนอื่น ๆ (Ben James) นั้นค่อนข้างดีและฉันก็ใช้มัน ในขณะที่ผู้ใช้ 889030 ชี้ให้เห็นองค์ประกอบอาร์เรย์สุดท้ายอาจว่างเปล่า ที่จริงแล้วองค์ประกอบอาร์เรย์แรกและสุดท้ายจะว่างเปล่า รหัสด้านล่างเน้นถึงปัญหาทั้งสอง
# 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);
?>
@ มันไม่สำคัญคุณสามารถแยกพื้นที่ด้วยการระเบิด จนกว่าคุณจะต้องการใช้ค่าเหล่านั้นให้วนซ้ำค่าที่ระเบิดและยกเลิกช่องว่าง
$str = "A B C D";
$s = explode(" ",$str);
foreach ($s as $a=>$b){
if ( trim($b) ) {
print "using $b\n";
}
}