-1

我想根据字符的位置拆分一个变量。生成的第一个字符串应具有指定位置之前的先前位置,而另一个字符串应包含其他部分。

假设如果我有一个$var = "2013AD"; 我想要的变量

$var1 = 2013var2 = 'AD'

我怎样才能做到这一点?

4

5 回答 5

8

嗯...要去occam的剃刀这里,但是substr

$var1 = substr($var, 0, 4);
$var2 = substr($var, 4);
于 2013-04-04T21:04:22.390 回答
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");
于 2013-04-04T21:05:54.070 回答
1
<?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";

?>

示例的输出:

  • C
  • 光盘
  • cdefg
  • A B C D
  • A B C D
  • 电子烟
于 2013-04-04T21:10:28.537 回答
0

你可以使用 substr 函数

$var1 = substr($var, 0, 4);
$var2 = substr($var, 4);
于 2013-04-04T21:06:24.727 回答
0

您还可以使用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'
于 2021-05-14T08:06:33.280 回答