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) Obtenez chaque ligne de cette zone de texte ($text
) et travaillez avec elles en utilisant foreach()
?
2) Ajouter <br />
à la fin de chaque ligne, sauf la dernière?
3) Lancez chaque ligne dans un tableau.
Important - le texte à l'intérieur de textarea peut être multilingue.
Ont essayé d'utiliser:
$text = str_replace('n', '<br />', $text);
Mais ça ne marche pas.
Merci.
8 réponses
Vous voudrez regarder dans la fonction nl2br() avec la fonction trim () .
Le nl2br()
insérera <br />
avant le caractère de nouvelle ligne (\n
) et le trim()
supprimera les caractères de fin \n
ou les espaces.
$text = trim($_POST['textareaname']); // remove the last \n or whitespace character
$text = nl2br($text); // insert <br /> before \n
Cela devrait faire ce que vous voulez.
Mise à JOUR
La raison pour laquelle le code suivant ne fonctionnera pas est que pour que \n
soit reconnu, il doit être entre guillemets doubles puisque les guillemets doubles analyser les données à l'intérieur d'eux, où les guillemets simples le prennent littéralement, C'est-à-dire "\n"
$text = str_replace('\n', '<br />', $text);
Pour le réparer, ce serait:
$text = str_replace("\n", '<br />', $text);
Mais il est toujours préférable d'utiliser la fonction intégrée nl2br()
, PHP fournit.
Modifier
Désolé, j'ai pensé que la première question était pour que vous puissiez ajouter les sauts de ligne, en effet cela va changer la réponse un peu, comme anytype de explode()
supprimera les sauts de ligne, mais le voici:
$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 le faites de cette façon, vous devrez ajouter le <br />
à la fin de la ligne avant que le traitement ne soit effectué seul, car la fonction explode()
supprimera les caractères \n
.
Ajouté le array_filter()
pour trim()
désactiver tous les caractères \r
supplémentaires qui peuvent avoir été persistants.
Vous pouvez utiliser la constante PHP:
$array = explode(PHP_EOL, $text);
Notes complémentaires:
1. Pour moi, c'est le moyen le plus simple et le plus sûr car il est compatible multi-plateforme (Windows / Linux, etc.)
2. Il est préférable d'utiliser PHP CONSTANT chaque fois que vous le pouvez pour une exécution plus rapide
Vieille bande de roulement...? Eh bien, quelqu'un peut cogner dans cette...
S'il vous Plaît vérifier http://telamenta.com/techarticle/php-explode-newlines-and-you
Plutôt que d'utiliser:
$values = explode("\n", $value_string);
Utilisez une méthode plus sûre comme:
$values = preg_split('/[\n\r]+/', $value_string);
Utilisez PHP DOM pour analyser et ajouter <br/>
dedans. Comme ceci:
$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);
Cette sortie:
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)
Cela fonctionne pour moi:
if (isset($_POST['MyTextAreaName'])){
$array=explode( "\r\n", $_POST['MyTextAreaName'] );
Maintenant, mon tableau $aura toutes les lignes dont j'ai besoin
for ($i = 0; $i <= count($array); $i++)
{
echo (trim($array[$i]) . "<br/>");
}
(Assurez-vous de fermer le bloc if
avec une autre Accolade)
}
Pour un <br>
sur chaque ligne, utilisez
<textarea wrap="physical"></textarea>
Vous obtiendrez \n
s dans la valeur de la zone de texte. Ensuite, utilisez nl2br()
la fonction à créer <br>
s, ou vous pouvez explode() pour <br>
ou \n
.
J'espère que cela aide
$array = explode("\n", $text);
for($i=0; $i < count($array); $i++)
{
echo $line;
if($i < count($array)-1)
{
echo '<br />';
}
}
$content = $_POST['content_name'];
$lines = explode("\n", $content);
foreach( $lines as $index => $line )
{
$lines[$index] = $line . '<br/>';
}
// $lines contains your lines