フォームの<textarea>で文章を入力し、submitすると文章を最初の8文字に丸めて出力するプログラムを作りました。(最後に...がつくので半角だと最初の5文字+...が出力)
<textarea> は name="note" です。 以下はプログラムの一部です。 ``` if(isset($_POST["note"])){ $note = $_POST["note"]; $note = strip_tags($note); $note = mb_substr($note, 0, 1000); $note = escape($note); //HTMLエスケープ }else { $note = ""; } ``` ``` $len = mb_strlen($note); if($len > 0){ echo "<hr>"; $note_br = nl2br($note, false); $short = mb_strimwidth($note, 0, 8, "..."); echo $short; } ``` 通常は問題なく動作するのですが、改行に関しての挙動が理解できません。 以下のようにテキストに入力したときです。(コードではないので青い色は気にしないで下さい。) ``` A B C D E F G H I ``` 結果は「A B ...」となります。 改行なしで入力すると「ABCDE...」と予想通りの結果になってくれます。 (半角5文字+... の8文字に丸められている) ABCDEの5文字未満のところで改行すると、「ABCDE...」(半角5文字が表示)とならずに、 「A B ...」のように2文字しか表示されなかったりします。(一文字ずつ改行するとAとBの2文字しか表示されません。) 何度どこで改行しても、半角5文字+...となるように丸めることは可能でしょうか?回答2件
あなたの回答
tips
プレビュー