2011-02-01 69 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;