PHP: объединить текст после взрыва - PullRequest
1 голос
/ 30 августа 2010

Используя Explode, я разбил текст на куски, а затем приступил к поиску нескольких вещей в тексте.

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

foreach ($pieces as $piece) {
    Some Modification of the piece
}

Мои вопросы, как я могу собрать эти кусочки вместе?Так что я могу завернуть текст в текст.Некоторым нравится это:

piece 1 + piece 2 + etc

Ответы [ 6 ]

3 голосов
/ 30 августа 2010

Вы бы использовали функцию implode().

http://php.net/manual/en/function.implode.php

string implode ( string $glue , array $pieces )
string implode ( array $pieces )

РЕДАКТИРОВАТЬ: Возможно, самый вводящий в заблуждение вопрос когда-либо.

Если вы пытаетесь обернуть слова в создаваемые вами изображения, возможно, вы могли бы поместить их все в отдельные элементы div в порядке с плавающей точкой: left.

2 голосов
/ 30 августа 2010

Вот мой дубль

$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare tincidunt euismod. Pellentesque sodales elementum tortor posuere mollis. Curabitur in sem eu urna commodo vulputate.\nVivamus libero velit, auctor accumsan commodo vel, blandit nec turpis. Sed nec dui sit amet velit interdum tincidunt.";

// Break apart at new lines.
$pieces = explode("\n", $text);

// Use reference to be able to modify each piece.
foreach ($pieces as &$piece)
{
    $piece = wordwrap($piece, 80);
}

// Join the pieces together back into one line.
$wrapped_lines = join(' ', $pieces);

// Convert new lines \n to <br>.
$wrapped_lines = nl2br($wrapped_lines);
echo $wrapped_lines;

/* Output:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare tincidunt<br />
euismod. Pellentesque sodales elementum tortor posuere mollis. Curabitur in sem<br />
eu urna commodo vulputate. Vivamus libero velit, auctor accumsan commodo vel, blandit nec  turpis. Sed nec<br />
*/
2 голосов
/ 30 августа 2010

Прежде всего, если вы хотите изменить каждый $piece во встроенном цикле, вы должны циклически перебирать элементы как ссылки :

foreach ($pieces as &$piece)

Когда цикл завершен, вы можете снова создать одну строку, используя join():

$string = join(' ', $pieces);

(Первый параметр join() - это разделитель, который склеивает части. Используйте все, что подходит для вашего приложения.)

1 голос
/ 30 августа 2010

Все ответы пока делают это намного сложнее, чем есть.Почему бы не собрать его обратно, когда вы его модифицируете?Я думаю, это то, что вы ищете.

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

// text has already been passed to pieces so unset it
unset($text);

foreach ($pieces as $piece) {
    Some Modification of the piece
    // rebuild the text here
    $text .= {MODIFIED PIECE};
}

// print the new modified version
echo $text;
0 голосов
/ 30 августа 2010

Вопрос довольно запутанный, но хотелось бы что-то вроде этой работы:

$new = implode(' ', $pieces);
echo wordwrap($new, 120); // wordwrap 120 chars
0 голосов
/ 30 августа 2010

$pieces = implode(' ', $pieces);

...