【发布时间】:2016-02-17 06:04:00
【问题描述】:
我有一个字符串,像这样:
$str ="it is a test string.";
// for more clarification
i t i s a t e s t s t r i n g .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
现在我需要检查所有是 4 的倍数的字符(加上第一个字符)。像这样:
1 => i
4 => i
8 => [space]
12 => t
16 => r
20 => .
现在,我需要将它们与Y比较(Y 是一个变量(符号),例如这里的Y = 'r')。所以我想用X 替换Y(X 也是一个变量(符号),例如这里的X = 'm')。
所以,我想要这个输出:
it is a test stming.
这是我的解决方案:我可以使用一些 PHP 函数来做到这一点:
-
strlen($str):统计字符数(命名为$sum) -
$sum / 4: 寻找4的倍数的字符 -
substr($str, 4,1):选择特定字符(命名为$char) {问题就在这里} -
if ($char == 'r') {}:比较 -
str_replace('r','m',$char): 替换
然后将所有$char 相互组合。
但我的解决方案有两个问题:
-
substr()不算[space]字符(如上所述) - 组合字符有点复杂。 (需要进行一些废物处理)
嗯,有什么解决办法吗?我喜欢用 REGEX 来做,有可能吗?
【问题讨论】:
-
您能否更具体地了解“
substr()不计入[space]”?这个我看不懂。 -
$chars = explode('', $string);会给你一个包含所有字符的数组。这应该为您指明正确的方向。 -
@Passerby
echo substr($str, 4, 1)=> 输出:s。s是第五个字符。所以substr()不算[空格] -
@Shafizadeh 否......字符串和数组索引从 0 开始计数,而不是 1。
-
@Passerby 哦,是的,看来你是对的,谢谢。