PHP:字符串中每4个字符替换3个字符
我有一个字符串,我想知道如何在4个字符的间隔中保留1个字符PHP:字符串中每4个字符替换3个字符,php,string,replace,intervals,Php,String,Replace,Intervals,我有一个字符串,我想知道如何在4个字符的间隔中保留1个字符 $string = "bc7yad3odf0x"; // and goes like this.. 我希望我的新字符串为: yox 它来自bc7 y ad3 o df0 x 要输入的三个字符始终类似于字符编号 编辑:谢谢大家的回答。我测试了你所有的答案,除了trisweb的preg_replace()解决方案,它们对我来说都很好,我得到了“未知修饰符‘g’”。 我接受Bhavik Shah的回答,因为我认为这是我理解的最简单的回答。
$string = "bc7yad3odf0x"; // and goes like this..
我希望我的新字符串为:
yox
它来自bc7 y ad3 o df0 x
要输入的三个字符始终类似于字符编号
编辑:谢谢大家的回答。我测试了你所有的答案,除了trisweb的preg_replace()解决方案,它们对我来说都很好,我得到了“未知修饰符‘g’”。
我接受Bhavik Shah的回答,因为我认为这是我理解的最简单的回答。$str=“bc7yad3odf0x”;
$str = "bc7yad3odf0x";
$final_str = "";
$len = strlen($str);
for($i = 3; $i < $len; $i = $i+4) {
$final_str .= substr($str, $i, 1)." ";
}
echo $final_str;
$final_str=“”;
$len=strlen($str);
对于($i=3;$i<$len;$i=$i+4){
$final_str.=substr($str,$i,1)。”;
}
echo$final_str;
有关的更多详细信息。$string=“bc7yad3odf0x”;
$new_string=“”;
$iterations=ceil(strlen($string)/4);
对于($i=1;$i似乎是正则表达式的工作
$kept = preg_replace('/[a-z]{2}[0-9]/gi', "", $string);
我们在这里所做的是用一个空白字符串替换出现的“字母数字”,删除它们
如果字符串的格式始终与您所说的相同,那么它应该可以正常工作。但是,如果您总是希望保留第四个字符,则可以使用:
$kept = preg_replace('/.{3}(.)/gi', "$1", $string);
或者,要使用类似的方法使用反向引用使第一个表单更加严格,请使用:
$kept = preg_replace('/[a-z]{2}[0-9](.)/gi', "$1", $string);
有关在PHP中使用正则表达式的详细信息,请参见
preg_replace("/\w{3}(\w)/","$1",$string);
在php中,您可以访问类似字符串的数组
例如:
$text = "abcde";
echo $text[1]; // b
因此,您可以将每个forth字符连接到最后一个字符串。这是目前我能想到的最简单的方法。最好使用正则表达式:
$var = "bc7yad3odf0x";
$var = preg_replace("/[a-z]{2}[0-9]([a-z])/i","$1",$var);
echo $var;
$var = "bc7yad3odf0x";
$var = preg_replace("/[a-z]{2}[0-9]/i","",$var);
echo $var;
试试这个
$y = 3;
for($i=0; $i<strlen($string); $i++){
if($y < strlen($string)){
$out .= substr($string,$y,1);
$y = $y+4;
}else{
break;
}
}
echo $out;
$y=3;
对于($i=0;$i来说,循环很容易
$ans = "";
for($i = 3, $l = strlen($s); $i < $l; $i += 4)
$ans .= $s[$i];
$ans=”“;
对于($i=3,$l=strlen($s);$i<$l;$i+=4)
$ans.=$s[$i];
请参见。?原始字符串的长度总是相同的吗?@John Conde我尝试过preg_replace()但我只保留了第一个字符,并保留了接下来的三个字符。我想不出一种方法来改变它。@Quentin Engles不,原始字符串的长度几乎从来都不一样。也许你应该把它放在一个循环中,跳转为4,一个示例字符串的长度与问题中的长度相同。你的解决方案是很好,只要没有问题之外的任何其他条件。如果字符串的长度始终相同,则可能不需要循环。我将询问提问者。
$var = "bc7yad3odf0x";
$var = preg_replace("/[a-z]{2}[0-9]([a-z])/i","$1",$var);
echo $var;
$var = "bc7yad3odf0x";
$var = preg_replace("/[a-z]{2}[0-9]/i","",$var);
echo $var;
$y = 3;
for($i=0; $i<strlen($string); $i++){
if($y < strlen($string)){
$out .= substr($string,$y,1);
$y = $y+4;
}else{
break;
}
}
echo $out;
$ans = "";
for($i = 3, $l = strlen($s); $i < $l; $i += 4)
$ans .= $s[$i];