2017-08-31 31 views
0

我想从字符串中跨越3个字。比如我有一个标题在3个字的组中分解数组并将其包装

$string = "one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen"; 

结果输出:

<span>one two three</span> 
<span>four five six</span> 
<span>seven eight nine</span> 
<span>ten eleven twelve</span> 
<span>thirteen fourteen fifteen</span> 
<span>sixteen seventeen</span> 

下面是代码

<?php 
$title_my = 'one two three four five six seven eight nine ten eleven 
twelve thirteen fourteen fifteen sixteen seventeen'; 
$word_count = str_word_count($title_my); 
/****/ 
if($word_count < 5): 
$word_i = '12'; 
else: 
$word_i = '13'; 
endif; 
/****/ 
$lines = explode("\n", wordwrap($title_my,$word_i, "\n")); 
echo '<pre>'; 
$i = 1; 
foreach ($lines as &$value) { 
    echo '<span class="green'.$i.'">'.$value.' </span>'; 
} 
echo '</pre>'; 
?> 

回答

2

希望这将是一个有益的。这里我们使用explodeimplodearray_maparray_chunk

Try this code snippet here

<?php 

$string="one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen"; 
$data=array_chunk(explode(" ", $string),3);//splitting words into group of 3 
$data=array_map(function($value){ 
    return sprintf("<span>%s</span>",implode(" ",$value)) ; //adding span tags around it. 
},$data); 

echo implode("\n",$data); 

输出:

<span>one two three</span> 
<span>four five six</span> 
<span>seven eight nine</span> 
<span>ten eleven twelve</span> 
<span>thirteen fourteen fifteen</span> 
<span>sixteen seventeen</span> 
+0

@AwsmeSandy很乐意帮助你的朋友:) –

0

您也可以使用正则表达式来做好这项工作。在php preg_replace()中使用正则表达式。

$html = preg_replace("/(\w+\s\w+(\s\w+\s)?)/", "<span>$1</span>\n", $title_my); 

检查它在demo

0

您也可以使用它

$title_my = 'one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen'; 
$lines = explode(" ", $title_my); 
$group=3; 
$k=1; 
echo '<pre>'; 
for ($i = 0; $i < count($lines); $i = $i + $group) { 
    echo '<span class="green' . $k . '">'; 
    for ($j = $i; $j < $i + $group; $j++) { 
     if (isset($lines[$j])) { 
      echo $lines[$j]." "; 
     } 
    } 
    echo ' </span></br>'; 
    $k++; 
} 
echo '</pre>'; 
相关问题