在PHP中,我如何转换:
$result = "abdcef";
转换成一个数组,这个数组应该是:
$result[0] = a;
$result[1] = b;
$result[2] = c;
$result[3] = d;
编辑过
$result = str_split('abcdef');
不知道你是否已经意识到这一点,但根据你尝试做什么,你可能无需采取任何行动。
$string = "abcdef";
echo $string[1];
//Outputs "b"
如果你只需要简单的东西,那么你可以像访问数组一样轻松地访问它。
$value = "abcdef";
$array = str_split($value);
如果您希望将字符串分成不同数量的数组值,可以指定第二个参数:
$array = str_split($value, 2);
preg_split()
。无需使用捕获组来减慢正则表达式引擎。var_export(
preg_split('//u', 'abcåäö', 0, PREG_SPLIT_NO_EMPTY)
// or preg_split('/.\K/us', 'abcåäö', 0, PREG_SPLIT_NO_EMPTY)
// or preg_split('/\X\K/u', 'abcåäö', 0, PREG_SPLIT_NO_EMPTY)
);
对于 PHP 7.4 或更高版本,只需使用专用函数mb_str_split()
。
mb_str_split('abcåäö')
输出:
array (
0 => 'a',
1 => 'b',
2 => 'c',
3 => 'å',
4 => 'ä',
5 => 'ö',
)
str_split()
函数的研究人员的警告,当处理多字节字符时,您将获得破损的结果。\X
默认情况下尊重换行符。 \X
与没有s
修饰符的.
略有不同。 演示
var_export(preg_split('/.\K/u', "å\nä", 0, PREG_SPLIT_NO_EMPTY)); // element [1] has two characters in it!
echo "\n---\n";
var_export(preg_split('/.\K/us', "å\nä", 0, PREG_SPLIT_NO_EMPTY));
echo "\n---\n";
var_export(preg_split('/\X\K/u', "å\nä", 0, PREG_SPLIT_NO_EMPTY));
如果需要手动或基础编程,最好使用 "str_split()
"。
$string = "abcdef";
$resultArr = [];
$strLength = strlen($string);
for ($i = 0; $i < $strLength; $i++) {
$resultArr[$i] = $string[$i];
}
print_r($resultArr);
输出:
Array
(
[0] => a
[1] => b
[2] => c
[3] => d
[4] => e
[5] => f
)
$result = "abcdef";
$result = str_split($result);
str_split函数还有一个可选参数,可以将字符串分割成每个长度为x的块。
https://www.php.net/manual/zh/function.str-split.php#refsect1-function.str-split-notes
str_split() 在处理多字节编码字符串时,会将字符串分割成字节而非字符。
请使用 mb_str_split()
替代。
<?php
$result = str_split('abcdef',1);
echo "<pre>";
print_r($result);
?>
str_split()
函数。$array = str_split($string);
foreach ($array as $p){
echo $p . "<br />";
}
str_split()
对于多字节字符不安全。
mb_str_split()
需要 PHP 7.4+。
尝试使用 preg_split()
进行解决:
$result = preg_split('/(.)/u', 'abcåäö', -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
str_split('')
返回的是非空数组。 - Klesun