Tôi cần chia chuỗi đầu vào của mình thành một mảng tại dấu phẩy.
Làm thế nào tôi có thể hoàn thành việc này?
Đầu vào:
9,admin@example.com,8
Tôi cần chia chuỗi đầu vào của mình thành một mảng tại dấu phẩy.
Làm thế nào tôi có thể hoàn thành việc này?
9,admin@example.com,8
Câu trả lời:
Hãy thử phát nổ :
$myString = "9,admin@example.com,8";
$myArray = explode(',', $myString);
print_r($myArray);
Đầu ra:
Array
(
[0] => 9
[1] => admin@example.com
[2] => 8
)
var_dump
cung cấp thông tin chi tiết hơn. Thậm chí hữu ích hơn nữa là var_export($myArray, true)
vì nó trả về đầu ra var_dump
dưới dạng một chuỗi để bạn có thể lưu trữ nó trong một số nhật ký mà không phá vỡ trang web được tạo ...
$myString = "9,admin@example.com,8";
$myArray = explode(',', $myString);
foreach($myArray as $my_Array){
echo $my_Array.'<br>';
}
Đầu ra
9
admin@example.com
8
$string = '9,admin@google.com,8';
$array = explode(',', $string);
Đối với các tình huống phức tạp hơn, bạn có thể cần phải sử dụng preg_split
.
Nếu chuỗi đó đến từ tệp csv, tôi sẽ sử dụng fgetcsv()
(hoặc str_getcsv()
nếu bạn có PHP V5.3). Điều đó sẽ cho phép bạn phân tích các giá trị được trích dẫn một cách chính xác. Nếu nó không phải là một csv, explode()
nên là sự lựa chọn tốt nhất.
Mã số:
$string = "9,admin@example.com,8";
$array = explode(",", $string);
print_r($array);
$no = 1;
foreach ($array as $line) {
echo $no . ". " . $line . PHP_EOL;
$no++;
};
Trực tuyến:
body, html, iframe {
width: 100% ;
height: 100% ;
overflow: hidden ;
}
<iframe src="https://ideone.com/pGEAlb" ></iframe>
Theo cách đơn giản, bạn có thể đi với explode($delimiter, $string)
;
Nhưng theo một cách rộng rãi, với Lập trình thủ công:
$string = "ab,cdefg,xyx,ht623";
$resultArr = [];
$strLength = strlen($string);
$delimiter = ',';
$j = 0;
$tmp = '';
for ($i = 0; $i < $strLength; $i++) {
if($delimiter === $string[$i]) {
$j++;
$tmp = '';
continue;
}
$tmp .= $string[$i];
$resultArr[$j] = $tmp;
}
Outpou: print_r($resultArr);
Array
(
[0] => ab
[1] => cdefg
[2] => xyx
[3] => ht623
)
Lựa chọn tốt nhất là sử dụng hàm "explode ()".
$content = "dad,fger,fgferf,fewf";
$delimiters =",";
$explodes = explode($delimiters, $content);
foreach($exploade as $explode) {
echo "This is a exploded String: ". $explode;
}
Nếu bạn muốn tiếp cận nhanh hơn, bạn có thể sử dụng một công cụ phân cách như Delimiter.co Có rất nhiều trang web như thế này. Nhưng tôi thích một mã PHP đơn giản.
explode
có một số vấn đề rất lớn trong việc sử dụng thực tế:
count(explode(',', null)); // 1 !!
explode(',', null); // [""] not an empty array, but an array with one empty string!
explode(',', ""); // [""]
explode(',', "1,"); // ["1",""] ending commas are also unsupported, kinda like IE8
đây là lý do tại sao tôi thích preg_split
preg_split('@,@', $string, NULL, PREG_SPLIT_NO_EMPTY)
toàn bộ nồi hơi:
/** @brief wrapper for explode
* @param string|int|array $val string will explode. '' return []. int return string in array (1 returns ['1']). array return itself. for other types - see $as_is
* @param bool $as_is false (default): bool/null return []. true: bool/null return itself.
* @param string $delimiter default ','
* @return array|mixed
*/
public static function explode($val, $as_is = false, $delimiter = ',')
{
// using preg_split (instead of explode) because it is the best way to handle ending comma and avoid empty string converted to ['']
return (is_string($val) || is_int($val)) ?
preg_split('@' . preg_quote($delimiter, '@') . '@', $val, NULL, PREG_SPLIT_NO_EMPTY)
:
($as_is ? $val : (is_array($val) ? $val : []));
}