从字符串的每n个字符构建一个新字符串


Build a new string from every nth character of a string

我有一个长字符串,我需要从中得到每12个字符。我目前用for()循环来做,但我想知道是否有更好/更有效的方法。

$verylongstring = 'thisisalongstringwithawholelotofcharctersitgoesonforawhile...loremipsum'; 
$newstring = '';
for ($i = 0; $i < strlen($verylongstring); $i++) 
{ 
    if ($i % 12 == 0) {
        $newstring .= $verylongstring[$i];
    }
} 
echo $newstring;

一点preg_replace()应该为你工作-

$verylongstring='thisisalongstringwithawholelotofcharctersitgoesonforawhileloremipsum'; 
$newString = preg_replace('/(.).{11,11}/', '$1', $verylongstring);
echo $newString;

下面是一个例子- http://phpfiddle.org/main/code/gf4i-6221

匹配前11个字符然后捕获第12个字符;如果满足此子模式,则用第12个字符替换所有12个字符。否则,匹配字符串的其余部分(11个字符或更少)并将这些字符替换为空字符串(未填充的第一个捕获组)。

代码(演示):

echo preg_replace('/.{11}(.)|.*/', '$1', $verylongstring);
// shroo

或者在不进行更改的情况下,贪婪地匹配最多11个字符(不返回),然后捕获存在的第12个字符。演示

echo preg_replace('/.{1,11}(.?)/', '$1', $verylongstring);