我有这样的输入:
$input="12050301000000000000";
我正在尝试使用preg_replace
将输入中的所有内容更改为0
,除了索引引用的两个字符。
例如,我想将除第一个和第二个字符之外的所有字符都替换为0。
我试过了:
$input="02050301000000000000";
$index1=0;
$index2=1;
$output= preg_replace('/(?!^'.$index1.')/', '0', $input);
答案 0 :(得分:0)
function replace($string, $replace) {
$args = func_get_args();
$string = array_shift($args);
$replace = array_shift($args);
$len = strlen($string);
$i = 0;
$result = '';
while($i < $len) {
$result .= !in_array($i, $args) ? $replace : $string[$i];
$i++;
}
return $result;
}
该函数在$ string和$ replace
之后接受任意数量的索引(int)$input="12050301000000000000";
echo $input;
echo '<br>';
echo replace($input, 'a', 1, 3, 5, 7);
答案 1 :(得分:0)
这对我有用
$input="02050301000000000000";
$index1=0;
$output = preg_replace("/[^".$index1."+?!^]/", '0', $input );
谢谢..
答案 2 :(得分:-1)
假设您要替换1和3索引值2和5:
$string = '02050301000000000000';
$patterns = array();
$patterns[1] = '/2/';
$patterns[3] = '/5/';
$replacements = array();
$replacements[1] = '0';
$replacements[3] = '0';
$output = preg_replace($patterns, $replacements, $string);
var_dump($output);
<强>输出:强> 2和5用0代替。
string(20) "00000301000000000000"