2011-02-01 67 views
1

尊敬的全部, 我如何從這些示例中刪除額外的0字符串。使用php切斷perticuler指向的字符串

當前字符串:0102000306 必需的字符串:12036

這裏0值在每個號碼的前面。所以,我需要從字符串中減去額外的全零[0]值,並得到我期望的字符串。這是不可能使用str_replace。因爲那麼所有的零將被替換。那麼,我該怎麼做呢。

感謝

+1

你是怎麼決定保持中間的零點,但不是其他的?算法對我來說不是很清楚。 – Piskvor 2011-02-01 10:24:28

+1

你想刪除零序列中不存在的所有零,並用一個零代替所有零序列? – Gordon 2011-02-01 10:24:50

+1

你也可以通過字符串循環,並可以使條件和生成新的字符串 – 2011-02-01 10:27:01

回答

3
$currentString = '0102000306'; 
$length = strlen($currentString); 
$newString = ''; 
for ($i = 0; $i < $length; $i++) { 
    if (($i % 2) == 1) { 
     $newString .= $currentString{$i}; 
    } 
} 

$currentString = '0102000306'; 
$tempArray = str_split($currentString,2); 
$newString = ''; 
foreach($tempArray as $val) { 
    $newString .= substr($val,-1); 
} 
4

使用正則表達式:

$result = preg_replace('#0(.)#', '\\1', '0102000306'); 

結果:

"12036" 

使用array_reduce:

$string = array_reduce(str_split('0102000306', 2), function($v, $w) { return $v.$w[1]; }); 

或者array_map +破滅:

implode('',array_map('intval',str_split('0102000306',2))); 
0

這不是特別優雅,但這應該做你想要什麼:

$old = '0102000306'; 
$new = ''; 
for ($i = 0; $i < strlen($old); $i += 2) { 
    $new .= $old[$i+1]; 
} 
echo $new;