尊敬的全部, 我如何从这些示例中删除额外的0字符串。使用php切断perticuler指向的字符串
当前字符串:0102000306 必需的字符串:12036
这里0值在每个号码的前面。所以,我需要从字符串中减去额外的全零[0]值,并得到我期望的字符串。这是不可能使用str_replace。因为那么所有的零将被替换。那么,我该怎么做呢。
感谢
尊敬的全部, 我如何从这些示例中删除额外的0字符串。使用php切断perticuler指向的字符串
当前字符串:0102000306 必需的字符串:12036
这里0值在每个号码的前面。所以,我需要从字符串中减去额外的全零[0]值,并得到我期望的字符串。这是不可能使用str_replace。因为那么所有的零将被替换。那么,我该怎么做呢。
感谢
$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);
}
使用正则表达式:
$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)));
这不是特别优雅,但这应该做你想要什么:
$old = '0102000306';
$new = '';
for ($i = 0; $i < strlen($old); $i += 2) {
$new .= $old[$i+1];
}
echo $new;
你是怎么决定保持中间的零点,但不是其他的?算法对我来说不是很清楚。 – Piskvor 2011-02-01 10:24:28
你想删除零序列中不存在的所有零,并用一个零代替所有零序列? – Gordon 2011-02-01 10:24:50
你也可以通过字符串循环,并可以使条件和生成新的字符串 – 2011-02-01 10:27:01