2017-08-31 2 views
0

J'essaie de grouper 3 mots dans un span d'une chaîne. Par exemple, j'ai un titreÉclater tableau dans le groupe de 3 mots et l'envelopper

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

sortie Résultante:

<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> 

Voici le code

<?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>'; 
?> 

Répondre

2

espoir celui-ci sera utile. Ici, nous utilisons explode, implode, array_map et array_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); 

Sortie:

<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 Je suis heureux de vous aider ami :) –

0

vous pouvez également utiliser regex pour faire ce travail. Utilisez regex dans php preg_replace().

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

Vérifiez dans demo

0

vous pouvez également l'utiliser

$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>';