2010-08-30 9 views
1

En utilisant exploser j'ai divisé le texte en morceaux, puis nous avons cherché à trouver quelque chose dans le texte. Mes questions alors comment puis-je les remettre en place ensemble?PHP: combiner le texte après l'explosion

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

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

Je peux donc envelopper le texte. Certains comme ceci:

piece 1 + piece 2 + etc 
+0

@timg: vous ne travaillez plus avec des chaînes là, vous essayez de mot envelopper l'image? – Piskvor

+0

oui c'est exactement ce que j'essaie de faire. – tim

+0

-1 pour revenir en arrière. – Fosco

Répondre

2

Voici mon

$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 /> 
*/ 
3

Vous devez utiliser la fonction implode().

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

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

EDIT: Peut-être jamais la question la plus trompeuse.

Si vous essayez d'ajouter un mot aux images que vous êtes en train de construire, vous pourriez peut-être les mettre toutes dans des div individuels dans l'ordre avec le style float: left.

+0

mais implode ne fonctionne que sur une chaîne et la pièce n'est pas une chaîne. – tim

+0

mais exploser ne fonctionne que sur une chaîne, créant un tableau de chaînes ... Qu'avez-vous fait à la chaîne? Ce serait une bonne information à mettre dans votre question. – Fosco

+0

J'ai modifié ma question en montrant ce que j'ai fait à la chaîne. Fondamentalement casse le texte cherche une URL, colore l'url une couleur différente et affiche ensuite comme une image. Pourquoi je dois essayer de remettre le morceau ensemble pour Wordwrap. S'il y a une URL qui est trop longue, l'URL ne passe pas à la ligne suivante. – tim

2

Tout d'abord, si vous souhaitez modifier chaque $piece dans la ligne de boucle, vous devez boucler sur les éléments que références:

foreach ($pieces as &$piece) 

Lorsque la boucle est terminée, vous pouvez produire un seul chaîne à nouveau à l'aide join():

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

(le premier paramètre à join() est le séparateur qui colle les morceaux Utilisez ce qui convient à votre application..)

+0

afair join() est déprécié et devrait être remplacé par implode (qui a la même syntaxe, je pense) – dbemerlin

+2

naw. join() est un alias de implode() et n'est pas obsolète. –

+0

C'est la réponse la plus concise et la plus utile. –

0

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

+0

FYI: implode est identique à join. –

+0

mais je préfère implode car la fonction opposée s'appelle 'exploser'. plus facile à retenir (: –

0

La question est assez déroutant, mais serait quelque chose comme ce travail:

$new = implode(' ', $pieces); 
echo wordwrap($new, 120); // wordwrap 120 chars 
1

Toutes les réponses pour rendre loin beaucoup plus difficile qu'elle ne l'est. Pourquoi ne pas le remettre ensemble lorsque vous le modifiez? Je pense que c'est ce que vous cherchez.

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