2013-04-04 82 views
-1

我想根據字符的位置拆分變量。生成的第一個字符串應該在指定位置之前具有前一個位置,而另一個字符串應該包含其他部分。如何根據位置拆分字符串

假設,如果我有一個變量$var = "2013AD";我想

$var1 = 2013var2 = 'AD'

我該如何做到這一點?

+0

4(str_split)或字母和數字(正則表達式)之間的計數? – 2013-04-04 21:02:49

+4

是嗎? 2個選項,你回答'是'? – 2013-04-04 21:05:02

+0

@Dagon後回答顯示這兩種方法,讓我接受它.. – 2013-04-04 21:07:05

回答

7

呃...要去奧卡姆的剃刀在這裏,但substr

$var1 = substr($var, 0, 4); 
$var2 = substr($var, 4); 
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"); 
+0

這是假設字符串實際上代表一個日期。 – Lix 2013-04-04 21:08:29

+0

@Downvoter你能給個理由嗎? – Baba 2013-04-04 21:13:42

+1

不用擔心@Baba +1 – 2013-04-04 21:18:58

0

您還可以使用t他SUBSTR功能

$var1 = substr($var, 0, 4); 
$var2 = substr($var, 4); 
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"; 

?> 

從實施例中的輸出:

  • Ç
  • CD
  • CDEFG
  • ABCD
  • ABCD
  • EFG
+0

相信你會付出很多的努力.... – Baba 2013-04-04 21:15:30

+0

這可能是一個非常有用的答案在不同的問題。但在這篇文章中,我覺得它是過度殺戮。甚至沒有解釋說這實際上是實現類似python的訪問數組對象的方法。 – Lix 2013-04-04 21:16:13

+0

+1爲此付出努力.. – 2013-04-04 21:19:53