如何根据位置拆分字符串

时间:2013-04-04 21:01:59

标签: php

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

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

$var1 = 2013var2 = 'AD'

我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:7)

嗯......要去这里看看这个剃刀,但是substr

$var1 = substr($var, 0, 4);
$var2 = substr($var, 4);

答案 1 :(得分:3)

您只需使用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");

答案 2 :(得分: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
  • cd
  • CDEFG
  • ABCD
  • ABCD
  • EFG

答案 3 :(得分:0)

你可以使用substr函数

$var1 = substr($var, 0, 4);
$var2 = substr($var, 4);

答案 4 :(得分:0)

您还可以使用 preg_split()\K 在字符串中的零宽度位置爆炸,以便在拆分时不会丢失任何字符。 \K 告诉正则表达式引擎忘记之前匹配的一个或多个数字。 2 用于将输出中的元素数量限制为最多 2 个。

代码:(Demo)

$var = "2013AD";

[$year, $jesusStatus] = preg_split('~\d+\K~', $var, 2);

var_export($year);
echo "\n";
var_export($jesusStatus);

输出:

'2013'
'AD'