PHP> эхо-строка, разделенная линиями по 3 слова в каждой? - PullRequest
2 голосов
/ 31 марта 2011

Мне нужно сделать что-то, что включает в себя функцию, которая использует Explode для создания массива.Я видел несколько примеров, но ближе к концу я действительно запутался!Есть ли простой читаемый способ для этого?(// комментарии?)

Возьмем, например, фрагмент текста:

"This is a simple text I just created".

Вывод должен выглядеть следующим образом:

This is a
simple text I
just created 

Таким образом, разнесение должно быть разделенотекст в строки по 3 слова в каждой.

Ответы [ 5 ]

1 голос
/ 31 марта 2011
$text = "This is a simple text I just created";
$text_array = explode(" ", $text);
$chunks = array_chunk($text_array, 3);
foreach ($chunks as $chunk) {
    $line = $impode(" ", $chunk);
    echo $line;
    echo "<br>";
}
1 голос
/ 31 марта 2011

Попробуйте вот что вам нужно:

<?php

$text = "This is a simple text I just created";

$text_array = explode(' ', $text);

$i = 1; // I made change here :)
foreach($text_array as $key => $text){

 if(ceil(($key + 1) / 3) != $i) { echo "<br/>"; $i = ceil(($key + 1) / 3);  }
 echo $text.' ';
}
?>

Результат:

This is a
simple text I
just created 
0 голосов
/ 31 марта 2011

взорваться просто разбивает строку по указанному символу. Там больше ничего нет.

взорваться (',', 'Текст, идет, здесь');

Это разбивает строку всякий раз, когда встречается, и возвращает массив.

для разделения на пробел

взорваться ('', здесь идет текст ');

Это разделяется только пробелом, а не пробелами. Прег_сплит будет проще разбить на любой пробел

0 голосов
/ 31 марта 2011

Так что-то вроде ...

function doLines($string, $nl){
  // Break into 'words' 
  $bits = explode(' ', $string);
  $output = '';
  $counter=0;
  // Go word by word...
  foreach($bits as $bit){
     //Add the word to the output...
     $output .= $bit.' ';
     //If it's 3 words...
     if($counter==2){
       // Remove the trailing space
       $output = substr($output, 0, strlen($output)-1);
       //Add the separator character...
       $output .=$nl;
       //Reset Counter
       $counter=0;
     }
  }
  //Remove final trailing space
  $output = substr($output, 0, strlen($output)-1);

  return $output;
}

Тогда все, что вам нужно, это:

echo doLines("This is a simple text I just created", "\n");

или

echo doLines("This is a simple text I just created", "<br />");

.. в зависимости от того, если вы простохотите новые строки или если вы хотите вывод HTML.

0 голосов
/ 31 марта 2011

Использование substr() функция ссылка

Пример:

<?php
$rest = substr("abcdef", -1);    // returns "f"
$rest = substr("abcdef", -2);    // returns "ef"
$rest = substr("abcdef", -3, 1); // returns "d"
?>

В вашем случае:

<?php 
$rest = substr("This is a simple text I just created", 0, 15); //This will return first 15 characters from your string/text

echo $rest; // This is a simpl
?>
...