我怀疑以前曾经问过,但我不知道它实际上叫什么,所以我找不到任何东西。
我正在创建一个基于浏览器的游戏,其中玩家拥有10x10网格。每个网格方块都有几个方面,一些是二进制标志,另一些是十六进制值。
要将此信息存储在数组中,我希望给定的单元格包含以下内容:
“9A0101”其中9A是图块类型,0和1是关于该图块图块的二进制标记。
我希望能够取“9A0101”并将其分为“9A”,“0”,“1”,“0”和“1”作为单独的变量。
TLDR:
如何在PHP中切割字符串?字符串将始终具有相同的长度,我想要剪切它的部分将始终处于相同的偏移量。
答案 0 :(得分:1)
使用substr()获取字符串
的部分<?php
echo substr('9A0101', 0,2); // 9A
echo substr('9A0101', 2, 1); // 0
echo substr('9A0101', 3, 1); // 1
echo substr('9A0101', 4, 1); // 0
echo substr('9A0101', 5, 1); // 1
?>
答案 1 :(得分:0)
substr()
怎么样? :
<?php
$str = '9A0101';
echo substr($str,0,2);
echo substr($str,2,1);
echo substr($str,3,1);
echo substr($str,4,1);
echo substr($str,5,1);
?>
答案 2 :(得分:0)
你可以使用substr()函数
<?php
$str = "9A0101";
$arr = Array();
$arr[0] = substr($str, -6, 2);
$arr[1] = substr($str, -4, 1);
$arr[2] = substr($str, -3, 1);
$arr[3] = substr($str, -2, 1);
$arr[4] = substr($str, -1, 1);
foreach($arr as $key => $val) {
echo($key . "=>" . $val . '<br/>');
}
?>
答案 3 :(得分:0)
或者可以使用 str_split() 函数。
$str = "9A0101";
//splitting the string
$array = str_split($str, 2);
var_dump($array);
答案 4 :(得分:0)
如果您正在寻找单个函数调用,regex 可以很好地为您服务。
preg_split('~(^..|.)\K~', $string);
以上将在字符串的前两个字符或每个后续字符之后的零宽度位置分割字符串。 \K
表示忘记已匹配的内容。
如果要将 5 个值保存为单独的变量,则可以使用 list()
或数组解构语法。 Demo
[$type, $one, $two, $three, $four] = preg_split('~(^..|.)\K~', $string);
如果您愿意,您甚至可以通过字符串偏移量访问单字节字符。 Demo
$type = $string[0] . $string[1];
$one = $string[2];
$two = $string[3];
$three = $string[4];
$four = $string[5];