我想根据字符的位置拆分一个变量。生成的第一个字符串应具有指定位置之前的先前位置,而另一个字符串应包含其他部分。
假设如果我有一个$var = "2013AD";
我想要的变量
$var1 = 2013
和var2 = 'AD'
。
我怎样才能做到这一点?
我想根据字符的位置拆分一个变量。生成的第一个字符串应具有指定位置之前的先前位置,而另一个字符串应包含其他部分。
假设如果我有一个$var = "2013AD";
我想要的变量
$var1 = 2013
和var2 = 'AD'
。
我怎样才能做到这一点?
嗯...要去occam的剃刀这里,但是substr?
$var1 = substr($var, 0, 4);
$var2 = substr($var, 4);
你可以简单地使用sscanf
$var = "2013AD";
list($var1, $var2) = sscanf($var, "%4d%2s");
echo $var1, ":", $var2;
输出
2013:AD
如果您正在使用date
它,请这样对待:
$var = "2013AD";
$date = DateTime::createFromFormat("Y\A\D",$var);
echo $date->format("Y");
<?php
function py_slice($input, $slice) {
$arg = explode(':', $slice);
$start = intval($arg[0]);
if ($start < 0) {
$start += strlen($input);
}
if (count($arg) === 1) {
return substr($input, $start, 1);
}
if (trim($arg[1]) === '') {
return substr($input, $start);
}
$end = intval($arg[1]);
if ($end < 0) {
$end += strlen($input);
}
return substr($input, $start, $end - $start);
}
print py_slice('abcdefg', '2') . "\n";
print py_slice('abcdefg', '2:4') . "\n";
print py_slice('abcdefg', '2:') . "\n";
print py_slice('abcdefg', ':4') . "\n";
print py_slice('abcdefg', ':-3') . "\n";
print py_slice('abcdefg', '-3:') . "\n";
?>
示例的输出:
你可以使用 substr 函数
$var1 = substr($var, 0, 4);
$var2 = substr($var, 4);
您还可以使用preg_split()
with\K
在字符串中的零宽度位置展开,以便在拆分时不会丢失任何字符。 \K
告诉正则表达式引擎忘记之前匹配的一位或多位数字。 2
用于将输出中的元素数量限制为最多 2 个。
代码:(演示)
$var = "2013AD";
[$year, $jesusStatus] = preg_split('~\d+\K~', $var, 2);
var_export($year);
echo "\n";
var_export($jesusStatus);
输出:
'2013'
'AD'