質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2284閲覧

空白スペースを改行にしたい

退会済みユーザー

退会済みユーザー

総合スコア0

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/02/07 06:15

スマホのアプリで、お知らせ機能を作成しています。WebViewです。

CMS画面から管理者がお知らせ情報を入力したら、反映されるという感じです。
機能自体は完成しているのですが、PCだと改行がうまくいくのに、スマホで見ると
改行ではなく空白スペースになってしまっています。

html

1<li> 2<p>お知らせ内容 :</p> 3<textarea id="textarea" type="textarea" name="notice" placeholder="お知らせする内容をご記入ください。"></textarea> 4</li>

php

1function noBlankLine($list) 2{ 3 $list = trim($list); 4 $list = preg_replace("/(\r?\n)+/","\n",$list); 5 return $list; 6}

上記のコードだと、管理者が

txt

1ああああああああああ 2いいいいいいいいいい 3 4ううううう

と入力し、var_dumpした時、
「ああああああああああ いいいいいいいいいい ううううう」
と表示されます。

管理画面側では空行を削除して、代わりに改行が反映されているのに
スマホ側では改行の代わりにスペースが入ってしまいます。

英文も記載する可能性もあるので、

・空行を改行に(PC、スマホ共に)
・文に入っているスペースはそのままで

このようにしたいと思ってますが、なかなかうまくできません。

どのようにすれば良いか、ご教示していただきたく存じます。
何卒、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

HTML だからではないでしょうか.
改行は \n では無く <br> (<br/>) になるかと思います

投稿2019/02/07 06:34

jimbe

総合スコア12646

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/02/07 07:27 編集

ご回答ありがとうございます。 >$list = preg_replace("/(\r?\n)+/","<br/>",$list); このようにしたところ、新規作成では確かにうまくいきますが、 投稿済みの物を編集した場合、うまく行かないです... 編集機能もあるということを失念しておりました。 すいません。。。 (追記します。) 具体的には、新規作成では 改行されますが、編集では あああああ<br/>いいいい<br/>ううう<br/>ええ という感じです。 どのようにしたらよいでしょうか..
jimbe

2019/02/07 07:26

編集前に逆に変換し, 編集後にまた <br> に変換しては如何ですか.
退会済みユーザー

退会済みユーザー

2019/02/07 07:30

やはり、その方法が良いのですね。 試してみます。ありがとうございます。
退会済みユーザー

退会済みユーザー

2019/02/07 08:19

試してみましたが、 編集後はどうもうまく行きません。 -------------- か< >さ< >た< >な かk き く -------------- このように表示されてしまいます。。。 編集だったら、 $list = preg_replace('<br/>',"\n",$list); $list = preg_replace("/(\r?\n)+/","<br>",$list); こちらの順で編集前に戻していますが、”<” と ">" だけが残ります。。。
jimbe

2019/02/07 08:30

preg_replace('/<br/>/',"\n",$list); では如何ですか.
退会済みユーザー

退会済みユーザー

2019/02/07 08:35

ご回答ありがとうございます。 if($edit){ $list = preg_replace('/<br/>/',"\n",$list); } $list = preg_replace("/(\r?\n)+/","<br>",$list); ----- ん<br>じょ<br>う<br>ほおう こ う し ん ----- となってしまいます(泣)
jimbe

2019/02/07 08:54 編集

そのコードでは, $edit が true の場合 <br/> を \n に変換した後, すぐ \n を <br> に変換してしまっています. どの場合にどの変換を行うのかを整理してコードの流れをお考えください.
退会済みユーザー

退会済みユーザー

2019/02/07 09:00 編集

すいません。 正規表現に関しましては、初めて着手するところなので どうして良いかわからず... ①新規作成の時、空行を削除し改行にする ---------------------------------------------------------- $new = $_POST['notice']; $newFeed = $this->noBlankLine(htmlspecialchars($new),false); function noBlankLine($list,$edit) { $list = trim($list); if($edit){ $list = preg_replace('/<br/>/',"\n",$list); } $list = preg_replace("/(\r?\n)+/","\n",$list); return $list; } ---------------------------------------------------------- //結果 改行されるて表示される お し ら せ ---------------------------------------------------------- ②先ほど作成した文言を編集(修正する) ---------------------------------------------------------- $new = $_POST['notice']; $newFeed = $this->noBlankLine(htmlspecialchars($new),true); function noBlankLine($list,$edit) { $list = trim($list); if($edit){ $list = preg_replace('/<br/>/',"\n",$list); } $list = preg_replace("/(\r?\n)+/","\n",$list); return $list; } ---------------------------------------------------------- //結果 更新をすると、更新した部分は改行されるが、 //新規で作成したものは、<br>になってしまう。 お<br>し<br>ら<br>せ い た し ま す ---------------------------------------------------------- ちなみに、 $list = preg_replace('/<br/>/',"\n",$list); を、以下にすると改行はされますが、"<"と">"が取れず...。 $list = preg_replace('<br>',"\n",$list); 更新した分は、改行されます。 ---------------------------------------------------------- //chrome 検証 "お<" <br> ">し<" <br> ">ら<" <br> . . . ---------------------------------------------------------- ご回答になっているでしょうか。 よろしくお願いいたします。
jimbe

2019/02/07 09:13

正規表現に注視しすぎておられます. 「コードの流れを」と書きましたのは, if($edit){ $list = preg_replace('/<br/>/',"\n",$list); } $list = preg_replace("/(\r?\n)+/","<br>",$list); という書き方では, <br> を \n に変換する 「preg_replace('/<br/>/',"\n",$list); 」と, \n を <br> に変換する 「preg_replace("/(\r?\n)+/","<br>",$list); 」が, $edit = true の時に順番に実行されています, ということです. $edit の true/false によって変換/逆変換を切り替えるのでしたら if($edit){ $list = preg_replace('/<br/>/',"\n",$list); }else{ $list = preg_replace("/(\r?\n)+/","<br>",$list); } と書かれると思うのですが, 如何でしょうか.
退会済みユーザー

退会済みユーザー

2019/02/07 09:33

私のお伝えの仕方が間違っていたら、申し訳ございません。 新規作成した投稿を、編集しても改行が効くようにしたいというのが 私の意図でした。 $editで切り替えは確かにおっしゃる通りなのですが 新規で\nを<br>に変換したものを投稿し、 その投稿したものを編集をすると、 htmlのコードとしてではなく、<br>という文言として表示されてしまいます。 ご教示していただいた、下記のコードですと、 ーーーーーーーーー if($edit){ $list = preg_replace('/<br/>/',"\n",$list); }else{ $list = preg_replace("/(\r?\n)+/","<br>",$list); } ーーーーーーーーー 新規で、 お し ら せ と入力した場合、 \nが、<br>に変換され、htmlコードとして表示されるので そのままお知らせ画面では表示されます。 しかし、この投稿した内容を 下記のように編集すると、 お し ら せ で し た お知らせ画面には、 お<br>し<br>ら<br>せ で し た というように、<br>がhtmlコードとしてではなく 文言として表示され、更新した、「で」「し」「た」の\nが スペースとなってしまいます。 期待する結果は、 お し ら せ で し た というようににしたいです。 一度、新規作成状態に戻すという意味を 私は、 「<br>を、\nの状態に戻す」という認識でした。 私の質問の仕方が、わかりづらく大変申し訳ございません。。。 ここまで付き合っていただき、ありがとうございます。。
退会済みユーザー

退会済みユーザー

2019/02/07 10:10

if($edit){ $list = str_replace('&lt;', '', $list); $list = str_replace('&gt;', '', $list); $list = preg_replace('<br>',"\n",$list); } で、できました。 色々ご教示してくださり、ありがとうございます!
jimbe

2019/02/07 11:14

なるほど, 私が「編集前に逆に変換し, 編集後にまた <br> に変換」と書いたもので, 編集が変換のことと思われてしまったのですね, すみません. 編集とは, 管理者によるお知らせの作成・編集のことでした. noBlankLine は「編集後の変換」を担当し, '\n' → '<br>' を行っています. それに対しまして「編集前に逆に変換」というのは, 「投稿済みの物を編集」するために " 'notice' textarea に送る直前の文字列 " に対して '<br>' → '\n' 変換を行うということでした. また, '<' '>' の表示は, htmlspecialchars($new) の影響と気付きました. (遅すぎで御免なさい.) $edit による置換とともに htmlspecialchars の呼び出しタイミングを変えられますと, もう少しコードがすっきりするかと思います.
退会済みユーザー

退会済みユーザー

2019/02/08 02:18

私の説明が誤解を招いてしまいました。。。 申し訳ございません。。 やはり、htmlspecialcharsですよね。呼び出しのタイミングを考えながら 修正してみます! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問