4

フォームに異なる段落があることをどのように検出できますか? この例では、ユーザーが異なる段落を書いた場合、エコーはすべてをまとめます。white-space:pre を試しましたが、うまくいきませんでした。テキストをエコーするために他に何ができるかわかりません<p>?

CSS:

#text {  
    white-space:pre;
}

HTML:

<form action='normal-html.php' method='post'> 
<textarea id="text" name='text' rows='15' cols='60'></textarea> <br/> 
<input type='submit' value='Convertir a html' /> 
</form> 

<br />

<?php
$text = $_POST[text];
echo $text;
?>
4

2 に答える 2

5

これはhttp://php.net/manual/en/function.nl2br.phpの仕事のように思えます

string nl2br ( string $string [, bool $is_xhtml = true ] )

Returns string with '<br />' or '<br>' inserted before all 
newlines (\r\n, \n\r, \n and \r). 

データをエコーアウトするときにこれを使用できるため、データベースの内容を変更することはありません。または、ユーザー入力をデータベースに保存するときに単純に変更することもできます。個人的には最初のオプションのファンですが、アプリケーションに最適なものは何でも構いません。

編集:<p>タグのみを使用する場合は、str_replaceを使用してこれを行うこともできます。

$text = '<p>';
$text.= str_replace('\n', '</p><p>', $_POST[text]);

これ\nは通常、新しい行です。読み方によっては、使用する必要がある場合があり\r\n、残りは文字列の置換によって行われます。これにより、弦の端にスペアが残り<p>ますが、これがどこに向かっているのかがわかります。

于 2013-08-30T13:35:23.540 に答える
1

分解機能を使用できます( php マニュアルページ):

$your_array = explode("\n", $your_string_from_db);

例:

$str = "Lorem Ipsum\nAlle jacta est2\nblblbalbalbal";
$arr = explode("\n", $str);

foreach ( $arr as $item){
   echo "<p>".$item."</p>";
}

出力:

 Lorem Ipsum
 Alle jacta est 
 blblbalbalbal
于 2013-08-30T13:37:47.913 に答える