我有一个长字符串,我需要从中得到每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);