51 votes

Obtenez chaque ligne de textarea

<textarea> put returns between paragraphs
for linebreak add 2 spaces at end
indent code by 4 spaces
quote by placing > at start of line
</textarea>

$text = value from this textarea;

Comment:

1) chaque ligne de ce textarea ($text) et de travailler avec eux à l'aide d' foreach()?

2) Ajouter l' <br /> à la fin de chaque ligne, sauf la dernière?

3) Jeter chaque ligne d'un tableau.

Important - le texte à l'intérieur textarea peut être multilingue.


Ont essayé d'utiliser:

$text = str_replace('\n', '<br />', $text);

Mais ça ne fonctionne pas.


Merci.

110voto

Brad F Jacobs Points 12725

Vous voulez regarder dans le nl2br() de la fonction ainsi que le trim(). L' nl2br() remplacera le caractère de saut de ligne (\n) avec <br /> et de la trim() supprimera tout se terminant \n ou les caractères espace.

$text = trim($_POST['textareaname']); // remove the last \n or whitespace character
$text = nl2br($text); // replace \n with <br /> 

Que devrait faire ce que vous voulez.

Mise à JOUR

La raison pour laquelle le code suivant ne fonctionnera pas parce que dans l'ordre pour \n pour être reconnu, il doit être à l'intérieur de guillemets doubles depuis des guillemets analyser des données à l'intérieur d'eux, où les guillemets simples qu'il prend, littéralement, c'est à dire "\n"

$text = str_replace('\n', '<br />', $text);

Pour y remédier, il serait:

$text = str_replace("\n", '<br />', $text);

Mais il est toujours préférable d'utiliser builtin nl2br() fonction, PHP fournit.

MODIFIER

Désolé, j'ai pensé que la première question était donc vous pouvez ajouter des retours à la ligne (dans, en effet, cela va modifier la réponse tout à fait un peu, comme anytype d' explode() va supprimer les sauts de ligne, mais ici, il est:

$text = trim($_POST['textareaname']);
$textAr = explode("\n", $text);
$textAr = array_filter($textAr, 'trim'); // remove any extra \r characters left behind

foreach ($textAr as $line) {
    // processing here. 
} 

Si vous faites de cette façon, vous aurez besoin d'ajouter l' <br /> sur la fin de la ligne, avant que le traitement est fait sur votre propre, comme l' explode() fonction supprime l' \n caractères.

Ajout de la array_filter() de trim() de rabais sur tout extra - \r caractères qui peuvent avoir été en attente.

46voto

Shah Erhan Points 128

Vous pouvez utiliser la constante PHP:

 $array = explode(PHP_EOL, $text);
 

5voto

shamittomar Points 20136

Utilisez PHP DOM pour analyser et ajouter <br/> dedans. Comme ça:

 $html = '<textarea> put returns between paragraphs
for linebreak add 2 spaces at end
indent code by 4 spaces
quote by placing > at start of line
</textarea>';

//parsing begins here:
$doc = new DOMDocument();
@$doc->loadHTML($html);
$nodes = $doc->getElementsByTagName('textarea');

//get text and add <br/> then remove last <br/>
$lines = $nodes->item(0)->nodeValue;

//split it by newlines
$lines = explode("\n", $lines);

//add <br/> at end of each line
foreach($lines as $line)
    $output .= $line . "<br/>";

//remove last <br/>
$output = rtrim($output, "<br/>");

//display it
var_dump($output);
 

Cela produit:

 string ' put returns between paragraphs
<br/>for linebreak add 2 spaces at end
<br/>indent code by 4 spaces
<br/>quote by placing > at start of line
' (length=141)
 

4voto

Fincha Points 983

pour
sur chaque ligne, écrivez simplement <textarea wrap="physical"></textarea> , vous obtiendrez "\ n" puis utilisez la fonction nl2br () pour créer

ou vous pouvez, obtenir la valeur de la zone de texte et l'exploser () pour "
"ou" \ n "

J'espère que cela peut aider

4voto

cichy Points 4956
$array = explode("\n", $text);
for($i=0; $i < count($array); $i++)
{
    echo $line;
    if($i < count($array)-1)
    {
         echo '<br />';
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X