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

lyr7nygr  于 2023-05-16  发布在  PHP
关注(0)|答案(2)|浏览(258)

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

$verylongstring = 'thisisalongstringwithawholelotofcharctersitgoesonforawhile...loremipsum'; 
$newstring = '';

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

icomxhvb1#

一个小preg_replace()应该对你有用-

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

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

roejwanj

roejwanj2#

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

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

或者不进行交替,贪婪匹配最多11个字符(不返回),然后捕获第12个字符(如果存在)。Demo

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

相关问题