2010-08-15 5 views
3

J'ai un champ de formulaire textarea où les utilisateurs vont mettre des URL séparées par une nouvelle ligne. Serait-il possible d'enrouler chaque ligne de ce champ de textarea avec < li> tags?Comment emballer chaque nouvelle ligne dans une zone de texte avec des balises li? PHP

donc je besoin de la sortie du champ à quelque chose comme ceci:

<li>some.url.com</li> 
<li>some.url.com</li> 
<li>some.url.com</li> 
<li>some.url.com</li> 
<li>some.url.com</li> 

Est-ce que quelqu'un sait à qui cela avec PHP ACHIVE s'il vous plaît?

Répondre

11
$textareaData = '<li>'.str_replace("\n","</li>\n<li>",trim($textareaData,"\n")).'</li>'; 

EDIT

modifié pour se débarrasser de toutes les lignes vides ainsi:

$textareaData = '<li>'.str_replace(array("\r","\n\n","\n"),array('',"\n","</li>\n<li>"),trim($textareaData,"\n\r")).'</li>'; 
+0

mes pensées exactement – Chris

+0

Merci Mark Cela fonctionne très bien. Si je pouvais juste omettre des lignes vides, ce serait parfait! – Brigante

+0

Merci! Fonctionne parfaitement. Très apprécié!! – Brigante

0

En utilisant une expression régulière, vous pouvez vérifier les lignes non vides dans le cadre de votre test:

$li_text = preg_replace('/^(.+)$/', '<li>$1</li>', $_POST['textarea']); 

De cette façon, si l'utilisateur a un nouveau ligne à la fin de leur entrée (ou n'importe où à l'intérieur) vous n'obtiendrez pas d'éléments de liste vides supplémentaires.

+0

Ce serait génial, mais ne peut pas le faire fonctionner. Il ne met pas les étiquettes li à tout ce qui vient de la zone de texte mais les données codées en dur. Btw J'ai obtenu le contenu provenant de la zone de texte en tant que variable si cela fait une différence. – Brigante

+1

Mise à jour: cela fonctionne bien s'il n'y a qu'une seule ligne de texte dans la zone de texte. S'il y a plus d'une ligne, il n'ajoute aucun tag li. – Brigante

+0

Modifié pour ajouter une option regex multiligne. – Mazuhl

1

Qu'en est-il quelque chose comme ça

echo preg_replace('/^(.+)(\s*)$/m', '<li>$1</li>', $text); 

La sortie sera quelque chose comme ça (pas agréable, mais utile):

<li>dsadsa 
</li> 
<li>dsdsa 
</li> 
<li>dsadsad 
</li> 
<li>dsadsadsad 
</li> 
<li>vcxvxcvxvcxvcx 
</li> 
<li>fdsfdsfdsfs 
</li> 
Questions connexes