DBから出力の際preg_replace等が効かぬ

このQ&Aのポイント
  • データベースを使用したウェブサイトで、POSTを使用してformタグからテキストをsql文に変換し、MySqlに挿入します。しかし、改行が正しく表示されず、消せません。
  • htmlspecialcharsとnl2brを使用して改行を変換しようとしましたが、うまくいきませんでした。
  • 他の文字列を直接出力した場合には正しく改行が変換されるため、ソースの記述ミスではないと考えています。なぜ改行が消えないのか、原因を教えてください。
回答を見る
  • ベストアンサー

DBから出力の際preg_replace等が効かぬ

データベースを使ったウェブサイト。 POSTを使ったformタグより、textareaにてテキストをsql文にて、 MySqlにinsertし、(このときにmysql_real_escape_string) 読み出すときにhtmlspecialcharsしてprint。 これが一般的な流れなのですが、 上記のまま行うと、改行(\r\n)がウェブ上に見えてしまいます。 ですので、 1:print preg_replace("/\r\n/","<br />", htmlspecialchars($ans['Pt_txt1'], ENT_QUOTES, 'UTF-8')); 2:print nl2br(htmlspecialchars($ans['Pt_txt1'], ENT_QUOTES, 'UTF-8')); などをやって消そうとしているのですが消えません。 ためしに、 $aaa ="適当な文字"; 1:print preg_replace("/\r\n/","<br />", htmlspecialchars($aaa, ENT_QUOTES, 'UTF-8')); 2:print nl2br(htmlspecialchars($aaa, ENT_QUOTES, 'UTF-8')); のように、MySqlを介さずに直接出力した場合、 ちゃんと改行コードは<br />に変更してくれましたので ソースの記述ミスではないと思うのです。 原因はなににあるでしょうか。 なお、現状phpmyadminで覗くと、 「フィールドA」(mysql_real_escape_stringを通してinsert) ----- あいうえお\r\nかきくけこ ----- 「フィールドB」(mysql_real_escape_stringを通さずにinsert) ----- さしすせそ たちつてと ----- となっているフィールドがありますが、 それらがhtmlで出力されたもののソースを見ると、 ----- A:あいうえお\r\nかきくけこ B:さしすせそ<br />たちつてと となぜかBのほうが希望通りの動きをします。 cを通さずにDBに入れてしまったほうが希望通りに動きます。 さっぱり困りました。

  • MySQL
  • 回答数6
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

こんばんは。 >コーギーが人のように思えてきました。 これは雑種です・・・。 バセンジーが入ってるようですが、よーわからん・・・。 保健所行きを貰ったので。 >ブラウザに出す場合はいかなる例外もなくhtmlspecialcharsを通す。 >というルールは守ったほうがいい気がするのですが 表示エリアはそうですね。 テキストエリアは例外扱いできないの??? そんなこと言ったら、<pre>はどーするの?

raryrary
質問者

お礼

こんばんは。 気付けば今週はこればかりやっています。 http://oshiete.goo.ne.jp/qa/1436841.html 上記にもあるように、やはりDBに入れる前に<br />にするのはよそうと思います。 ということでまた1からやり直します。

raryrary
質問者

補足

DBに入れる直前 $Pt_txt1 = mysql_real_escape_string($Pt_txt1);//安全化 ブラウザに出す直前 $Pt_txt1 = nl2br(htmlspecialchars($Pt_txt1, ENT_QUOTES, 'UTF-8'));//(一般のブラウザ) $Pt_txt1 = htmlspecialchars($Pt_txt1, ENT_QUOTES, 'UTF-8');//(テキストエリア) これでいけそうです。

その他の回答 (5)

回答No.5

こんばんは。 なんかよくわからんが・・・、考えすぎじゃないの??? 1.画面の入力(テキストエリアとする)値は あああ\r\nいいい\r\n& 2.POSTで飛んでくるので、 preg_replace("/\r\n/","<br />") mysql_real_escape_string あああ<br/>いいい<br/>& → DBに入る(&はそのままでよし) 3.テキストエリアに出力 preg_replace("<br/>","/\r\n/") 元のまま・・・。 4.表示エリアに出力 htmlspecialchars ここだけ使ったらどう?

raryrary
質問者

お礼

何度もありがとう。コーギーが人のように思えてきました。 2は確かに僕の書き方の逆でもいいですね。 問題は3なんです。ブラウザに出す場合はいかなる例外もなくhtmlspecialcharsを通す。 というルールは守ったほうがいい気がするのですが、杞憂ですか?

回答No.4

こんばんは。 ><textarea></textarea>で引っ張ってきた際、 >その入力フォーム内で<br />がまる見えになってしまいました。 その時に、 preg_replace("<br/>", "/\r\n/", DBから取得したデータ); じゃダメなん???

raryrary
質問者

お礼

こんにちは。確かにさらに元に戻せばいいんですよね・・・ となると、 管理画面のように、更新がある場合は大変ですね。 -textarea----------- あ い -------------------- をDBに入れる時 mysql_real_escape_stringで見えない改行コードを\r\nに変え、 それをさらにpreg_replace("/\\r\\n/","<br />")で<br />に変換 -DB----------------- あ<br />い -------------------- それを出力する際は、 preg_replace("/<br \/>/","\n")でまた見えない改行コードに直して htmlspecialcarsをかけて、安全化 -textarea----------- あ い -------------------- ですね。 ただ、htmlspecialcharsをかけたことにより半角アンド(&)などの問題はどうしましょうか。 ※ここからはhtmlspecialcharsについての完全な別件になりますが・・・ -textarea----------- あ&い -------------------- をDBに入れる時 mysql_real_escape_stringで見えない改行コードを\r\nに変え、 それをさらにpreg_replace("/\\r\\n/","<br />")で<br />に変換 -DB----------------- あ&い -------------------- それを出力する際は、 preg_replace("/<br \/>/","\n")でまた見えない改行コードに直して htmlspecialcharsをかけて、安全化 -textarea----------- あ&amp;い -------------------- ↑こうなっちゃいますよね。 というように、specialcharsを変えて変になっちゃう特有な文字を戻すのに 1つ1つ処理をやっていかないとだめってことですかね? textareaに出力する前に、 preg_replace("/<br \/>/","\n")でまた見えない改行コードに直して htmlspecialcharsをかけて、安全化 の部分が、 preg_replace("/<br \/>/","\n")でまた見えない改行コードに直して htmlspecialcharsをかけて、安全化 preg_replace("/'/","'")でキレイにして preg_replace("/&lt;/","<")でキレイにして preg_replace("/&gt;/",">")でキレイにして・・ というように変更すればいいってことですか?

回答No.3

こんにちは。 >phpmyadminで確認すると\r\nとなっています。 そうですよ。 「\r\n」と目で見れるという事は、 内部的には「\\r\\n」という文字列になっているからです・・・。 改行コードで格納されていれば、普通には見えません。 <br/>変換してから格納するのに抵抗があるのなら、 取得してから「\\r\\n」を「\r\n」に変換してから、 nl2brとかやるしかないですね。

raryrary
質問者

お礼

やはりDBに<br />を入れるのは大変です。 SQLインサート前に改行コード(\n?)を<br />に変えて格納したところ、 <textarea></textarea>で引っ張ってきた際、 その入力フォーム内で<br />がまる見えになってしまいました。 タグを知らない人が編集しようとしたら驚いてしまいますね。

raryrary
質問者

補足

こんにちは。 ありがとうございます。 phpmyadminで見えている\r\nは\\r\\nなんですね。 なるほど。 いましきりに > 取得してから「\\r\\n」を「\r\n」に変換してから、 の部分を頑張っていますが、うまくいっておりません。 $txt1 = preg_replace("/\\r\\n/","<br />", $ans['Pt_txt1']); $txt1 = preg_replace("/\r\n/","<br />", $txt1); print $txt1; $txt2 = preg_replace("/\\r\\n/","/\r\n/", $ans['Pt_txt1']); $txt2 = nl2br($txt1); print $txt2; ご指導をお願いできたら嬉しいです。

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

mysql_real_escape_string の前にすでに、addslashes 状態なのでは? magic_quotes_gpc ディレクティブの設定を確認してみてください。

raryrary
質問者

補足

ご返事ありがとうございます。 magic_quotes_gpc = Off、On ともにやってみてもだめでした。 addslashesとかを触らせないためにもphpmyadminにちょくで\r\nと書いてもだめです。 ほかの文字列なら置換してくれるのになぜかこの改行コードだけだめです。

回答No.1

こんばんは。 MySQLに入れる前に、 mysql_real_escape_string をやってしまってるので、htmlから飛んできた「\r\n」などは、「\\r\\n」として格納されます。 なので、DB上はただの文字列です・・・。 格納する特に「<br/>」にしてしまう方が無難かと思いますが・・・。

raryrary
質問者

補足

ご返事ありがとうございます。 > htmlから飛んできた「\r\n」などは、「\\r\\n」として格納されます。 とありますが、phpmyadminで確認すると\r\nとなっています。 どう格納されているか目では正しく確認できないということですか? また、格納はあくまで生データが基本というルールが一般的っぽかったので なるべくそうしようと思っていましたが、改行コードくらいはさきに 変換しちゃっても逸脱しませんか?害がなければそうしたいですが・・

関連するQ&A

  • 括弧内の処理の順序

    プログラムを見ていて気になった点があります。 htmlspecialchars(mysql_real_escape_string(stripslashes($_POST["inp01"])),ENT_QUOTES) 上記の書き方の場合、処理される順番は 内から「stripslashes」→「mysql_real_escape_string」→「htmlspecialchars」になるんでしょうか? 逆に 外から「htmlspecialchars」→「mysql_real_escape_string」→「stripslashes」 でしょうか。 また処理の順番ですが、 「htmlspecialchars」→「stripslashes」→「mysql_real_escape_string」が正しい形でしょうか。

    • ベストアンサー
    • PHP
  • php 送信されたフォームについて

    送信されたフォームの受け取る側のソースを書いたのですが、 <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> を付け加えるとエラーが表示されます。エラーの対象になっているのは print('正解数'.$i./4'です');らしいのですが、なぜエラーになるのかわかりません 回答お願いします。 以下ソースです。 <html> <head> <title>解答</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style type=""text/css""> #container{ width:1000 } #main{ width:500px; float:right; } #sidebar{ width:500px; float:left; } </style> </head> <body> <div id="container"> <div id="main"> <p>問題の解答</p> <p>問1</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> </div> <div id="sidebar"> <p><>あなたの解答<></p> <p>問1</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran24'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran32'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran33'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran34'], ENT_QUOTES, 'UTF-8')); ?> </p> </div> </div> <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> </body> </html>

    • 締切済み
    • PHP
  • サニタイズについて

    サニタイズを施した文字列をデータベースに格納した後、その文字列をデータベースから取り出し、そのまま表示する際の脆弱性として、どのような点が考えられますか。ただし、外部からのデータベース改ざんは無いものとします。 例えば、以下のような手順をふんだ場合における脆弱性です。この場合は、安全なものとして考えてもよろしいのでしょうか。 $str="任意の文字列 (省略)"; $str = htmlspecialchars($str, ENT_QUOTES); $str=mysql_real_escape_string($str); $strをデータベースにINSERTする データベースからSELECTして表示 ( print $str; )

    • ベストアンサー
    • PHP
  • DBから取得したデーター+配列データーの受取り

    (過去に似たような質問をしたのですが、その続きの質問です。) よろしくお願いします。 ※セッションID(以下(3)のDBのカラム(ssid)で使用)を 発行した状態で以下を行いたいのですが、(3)がうまくいきません。 (1)商品リストのDBを以下のように作り -------------------------------------------- (テーブル:products) product_id | product_cd | name | price 1 | 10 | 本01   | 1300 2 | 11 | 本02     | 1200 3 | 20 | サプリ01    | 4800 4 | 30  | ストレッチボード | 9800 5 | 30 | 健康シューズ   | 6800 -------------------------------------------- (2)上記をmysql_fetch_arrayで取り出し<table>を作成。 その際に、商品選択をする(checkbox)と(数量)を入力する<input> を加え<form>でkaimonoKago.phpへ送信します。 (products.php) <?php (途中省略) mysql_query("set names utf8"); $sql = "select * from products "; $result = mysql_query($sql) ; ?> <form method="post" action="kaimonoKago.php"> <table> <tr> <th></th> <th>商品コード</th> <th>商品名</th> <th>価格(税込</th> <th>数量</th> </tr> <?php while($row = mysql_fetch_array($result)){ print "<tr>\n"; print "<th><input type=\"checkbox\" name=\"check[]\" value=\"".$row["product_id"]."\"></th>\n"; print "<td>".htmlspecialchars($row["product_cd"])."</td>\n"; print "<td>".htmlspecialchars($row["product_name"])."</td>\n"; print "<td>&yen;".number_format($row["price_intax"])."</td>\n"; print "<td><input type=\"text\" name=\"kazu[".$row["product_id"]."]\" size=\"3\"></td>\n"; print "<input type=\"hidden\" name=\"ssid\" value=\"".$_SESSION['ssid']."\" />\n"; print "</tr>\n"; } ?> <input type="submit" name="order" value="注文" /> </form> (3)<form>で送られてきた情報を、買い物カゴDB ----------------------------------------------- (テーブル名:kaimonoKago) (カラム: ssid, product_cd, product_name, price_intax, kazu, shoukei) ----------------------------------------------- にインサートしたいのですが、うまくいきません。正しい記述を教えて下さい。 mysql_fetch_arrayやらwhile文やら配列が2つあったりして、どのように組み立てたら いいのか、基本的な考え方も教えていただければ幸いです。 (自分がつくった、うまくいかないコード)    ↓ (kaimonoKago.php) $check=(isset($_REQUEST["check"]) and is_array($_REQUEST["check"]))?$_REQUEST["check"]:array(); $kazu=(isset($_REQUEST["kazu"]) and is_array($_REQUEST["kazu"]))?$_REQUEST["kazu"]:array(); foreach($check as $val){ if($kazu[$val]>0){ $sql = "select * from products where product_id ='" . mysql_real_escape_string($val) . "'"; $result = mysql_query($sql); while($products = mysql_fetch_array($result)){ $product_cd = $products['product_cd']; $product_name = $products['product_name']; $price_intax = $products['price_intax']; $kazu = $kazu[$val]; $shoukei = $price_intax * $kazu; $sql = "insert into kaimonoKago ( ssid, product_cd, product_name, price_intax, kazu, shoukei ) values ( '" . mysql_real_escape_string ( $_SESSION['ssid'] ) . "', '" . mysql_real_escape_string ( $product_cd ) . "', '" . mysql_real_escape_string ( $product_name ) . "', '" . mysql_real_escape_string ( $price_intax ) . "', '" . mysql_real_escape_string ( $kazu ) . "', '" . mysql_real_escape_string ( $shoukei ) . "' )"; mysql_query($sql); } } } } よろしくお願いします。

    • ベストアンサー
    • PHP
  • エラーの意味と対策

    PHP-MySQL間でデータを更新するプログラムを作成、PHPファイルを 読み出し更新を行おうとしたところ、以下のメッセージが表示されました。 データの更新はできているのですが、このメッセージがよくわかりません。 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in E:\(ディレクトリ)\delete.php on line 106 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in E:\(ディレクトリ)\delete.php on line 106 ここに書かれているコードはSQLで $sql_update = "UPDATE ITEM SET DELETE_FLAG=1,LASTUPDATE_USER='".htmlspecialchars(mysql_real_escape_string($_COOKIE["loginuser"]),ENT_QUOTES)."',LASTUPDATE_DTTM=NOW() WHERE ITEM_ID=".$key; となっています。 今のところ「mysql_real_escape_string」をはずすとエラーが出ないのですが、 エラーの意味、原因、対策についてコメントいただければと思います。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • javascript php フォームについて

    javascriptで作ったフォームをphpに送信したいのですが、上手く送信できません。 どのようにすれば上手く送信することができるでしょうか? 回答お願いします。 javascript側のソース <body> <form name="nform1" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問1</p> <p> (1)<input type="text" name="kaitouran11" size="20"> (2)<input type="text" name="kaitouran12" size="20"> (3)<input type="text" name="kaitouran13" size="20"> (4)<input type="text" name="kaitouran14" size="20"> </p> </form> <form name="nform2" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問2</p> <p> (1)<input type="text" name="kaitouran21" size="20"> (2)<input type="text" name="kaitouran22" size="20"> (3)<input type="text" name="kaitouran23" size="20"> (4)<input type="text" name="kaitouran24" size="20"> </p> </form> <form name="nform3" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問3</p> <p> (1)<input type="text" name="kaitouran31" size="20"> (2)<input type="text" name="kaitouran32" size="20"> (3)<input type="text" name="kaitouran33" size="20"> (4)<input type="text" name="kaitouran34" size="20"> </p> </form> <input type="button" value="送信" onClick="send()"> </body> php側のソース <body> <p>問1</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran24'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran32'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran33'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran34'], ENT_QUOTES, 'UTF-8')); ?> </p> </body>

    • 締切済み
    • PHP
  • mysql_real_escape_string

    mysql_real_escape_stringについて調べていると、私と同じことを疑問に思い質問している人がいました。 こちらのページです。 http://okwave.jp/qa/q4423735.html mysql_real_escape_stringを通してDBに入れるとします。 すると、「テスト\」というデータをINSERTをするとDBには「テスト\」で入るのでしょうか? では、mysql_real_escape_stringを通さずにdbに入れても 「テスト\」というデータをINSERTをするとDBには「テスト\」で入ると思います。 上記のとおりとした場合、PHPはどうやってmysql_real_escape_stringを通したかどうか判定しているのでしょうか? 現在、mysql_real_escape_stringを通してDBに入れると、 「テスト\\」というデータがDBに入っています。 それをどうやって戻すのか調べていて、上記の質問を見つけました。 どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • html用とmysql用のエスケープ処理の両立方法

    一度htmlspecialcharsしたものをmysql_real_escape_stringしてはいけない、そうです。 下記のように$pageをブラウザに表示もして、mysqlでも使う場合はどうするのでしょうか。 先にmysql_real_escape_stringを使い終わった後に、 htmlspecialcharsを使うような構造になるように工夫するのでしょうか。 htmlspecialcharsは出力する直前に使用しなければならないですが、 mysql_real_escape_stringは直前でなくても構わないとのことなので そこも意識して・・・ $mysql = mysql_connect($HostName,$UserName,$Password); $page = mysql_real_escape_string($_GET['page']); $mysql_c = "SELECT * FROM tttttt WHERE page='$page'"; $mysql_q = mysql_query($mysql_c,$mysql); $page = htmlspecialchars($_GET['page']); $html = '<a href="?page='.$page.'">'.$page.'</a>'; <html> <body> <div><?php echo $page; ?></div> 他には方法がないのでしょうか。

    • ベストアンサー
    • PHP
  • 【php】改行にエスケープ文字が入る

    phpで  $_GET['a'] = stripslashes($_GET['a']); $_GET['a'] = mysql_real_escape_string($_GET['a']); $_GET['a'] → インサート と途中に stripslashes mysql_real_escape_string をはさんでから GETやPOSTを取得してるんですが改行が改行コードに変わってしまいます。 例えば質問フォームとかで  ---------------------------------------- 質問内容 ---------------------------------------- なんたら かんたら  ↓ サブミット ---------------------------------------- 投稿確認 ---------------------------------------- なんたら\n\rかんたら みたいなかんじです。 一旦文字コードをEUCにかえてから mysql_real_escape_stringを挟んだりしたりもしてみてますが 改行が改行コードになってしまいます。

    • ベストアンサー
    • PHP
  • Shift-JISの文字と改行コードについて

    TEXTAREAで入力した値をDBに対して、 .htmlspecialchars(mysql_real_escape_string(stripslashes($_POST["in3"])),ENT_QUOTES) の記述で保存した時、 文字化けコード(「ソ」「表」)が入っている場合に改行を行うと、 改行部に「\r」が文字として保存されてしまいます。 また、文字化けコードがない場合には「\r」は表示されず、 文字化けコードと改行までの間に半角英数字が入っていると「\r」は表示されません。 このような状態になる理由や回避方法についてコメントいただきたく思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP