2009-06-24 13 views
7

1'm essayer de comprendre comment emballer le texte comme celui-ci:Wrap texte dans la balise P

joueurs de football macro, amélioré la vie le football laoreet, carton lui-même. assis thermique oreiller debout. Pendant un certain temps, mon maintenant besoin laoreet. dessin animé micro-ondes était couche au clavier, ma course avant que le développeur ne

planification Mauris consommateurs et l'environnement. Mécène joueurs doux de la salade décorent toujours. entier maintenant une protéine pure et football mais, il faut un réfrigérateur. Même pour moi de faire face à la vie sur la tournée

dans ce:

< p> joueurs de football macro, amélioré la vie le football laoreet, carton lui-même. assis thermique oreiller debout. Pendant un certain temps, mon maintenant besoin laoreet. dessin animé micro-ondes était couche au clavier, ma course avant que le développeur n'est pas </p>

< p> Planification Mauris consommateurs et l'environnement. Mécène joueurs doux de la salade décorent toujours. entier maintenant une protéine pure et football mais, il faut un réfrigérateur. Même pour moi de faire face à la vie sur la tournée </p>

Notez les balises P autour du texte.

+0

Kohana Tu es un mec! Consultez 'texte :: auto_p()' :) – alex

+0

1 ne savait pas de Kohana à l'époque! Merci, hehe –

Répondre

8

Cela devrait le faire

$text = <<<TEXT 
Morbi nisl tortor, consectetur vitae laoreet eu, lobortis id ipsum. Integer scelerisque blandit pulvinar. Nam tempus mi eget nunc laoreet venenatis. Proin viverra, erat at accumsan tincidunt, ante mi cursus elit, non 

congue mauris dolor ac elit. Maecenas mollis nisl a sem semper ornare. Integer nunc purus, dapibus nec dignissim sed, dictum eget leo. Etiam in mi ut erat pretium fringilla sed 
TEXT; 

$paragraphedText = "<p>" . implode("</p>\n\n<p>", preg_split('/\n(?:\s*\n)+/', $text)) . "</p>"; 
+0

Merci, cela a très bien fonctionné. Vous avez quand même eu un bug, voyez mon code ici. http://codepad.org/soU8q5lL –

+0

Ah, oui, je vois. Corrigé, merci! –

2
$str = '<p>'. str_replace('\n\n', '</p><p>', $str) .'</p>'; 

OU

$str = '<p>'. preg_replace('\n{2,}', '</p><p>', $str) .'</p>'; 

Pour attraper 2 ou plus.

+0

faute de frappe: $ str = '

'. ereg_replace ($ str = '\ n \ n', '

') '.

« ; – racerror

+0

Merci Monsieur, fixer, j'ai oublié l'ordre des paramètres aussi. Lorsque –

+1

1'm à l'aide semblable à cela, 1'll souvent donner \ n \ n + ou \ n {2} pour permettre à deux ou plusieurs Newlin, plutôt que d'exiger exactement deux nouvelles lignes. –

3

Utilisez preg_replace dans une boucle sur toutes les lignes dans votre entrée

$replacement = preg_replace("/(.*)/", "<p>$1</p>", $current_line); 
+0

Cela fonctionne depuis - par défaut - le. exclut les nouvelles lignes.Bien sûr, il suppose qu'il n'y a pas de '' emballage dur '' dans le contenu. –