xmlファイルへの書き出し時の改行

このQ&Aのポイント
  • PHPからXMLファイルへの書き出し時に改行が認識されず文字として認識されてしまう問題についてのアドバイスをお願いします。
  • XMLファイルの書き出しに関するスクリプトが改行を認識せず、改行文字が文字列として追加される問題があります。
  • 改行が正しく認識されず、改行文字が文字列として追加されてしまう問題についての解決策を教えてください。
回答を見る
  • ベストアンサー

xmlファイル(UTF-8)への書き出し時の改行

こんばんわ。 息詰ってしまったので質問をさせていただきます。 無理矢理な書き方をしているのがいけないのか PHPからXMLファイルへ書き出しをすると改行として認識されず文字として認識されてしまいます。 どのたかご存じの方がいましたらアドバイスをお願いします! ■index.php(UTF-8、LF) //書き出しに関してのスクリプトです。 $xmlfile="xml/samplexml.xml(xmlファイルまでのパスとxmlファイル名)"; //xmlに書き出しデータ作成 $xmldata = "<xmldata><データ>データだよ</データ><果物>いちご</果物><野菜>キュウリ</野菜></xmldata>"; $fp = @fopen($xmlfile , "a") or err_msg("XMLが開けません。"); flock($fp , LOCK_EX); fputs($fp , $xmldata . "\n"); flock($fp , LOCK_UN); fclose($fp); ■samplexml.xml(UTF-8、LF) <?xml version="1.0" encoding="UTF-8"?> <xmldata><データ>データだよ0</データ><果物>ばなな</果物><野菜>キャベツ</野菜></xmldata> ※ここに改行をさせてデータを追加したい。。 上のスクリプトの結果は改行されずに「\n」も文字として改行されずに追加されてしまう。(「\n\r」「\r」でもテストをしてみたのですが結果は同じでした。)

  • PHP
  • 回答数1
  • ありがとう数3

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

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

#xD#xA 上記でいかがですか?

jpncan15
質問者

補足

NickAomoriさま アドバイスありがとうございます。 今しがた、自己解決しました。 解決方法は、 テキストエディター「mi」を使用しているので 「モードPHPの設定」「文字コード」の一番上「Unicode保存...」にチェックを入れたらきちんとバックスラッシュを認識しました。 NickAomoriさま本当にありがとうございました。

関連するQ&A

  • 追加書き込みと改行コードについて

     お世話になっております。  PHPの初心者です。  PHPの追加書き込みの件で質問です。テキストファイルにテキストを追加書き込みしようと思い、以下のように書きました。 $fp = fopen('data.txt', 'a'); flock($fp, LOCK_EX); $return = fputs($fp, "$namen"); flock($fp, LOCK_UN); fclose($fp);  これでファイルに追加で書き込みはできるのですが、文末に直接つながってしまい改行されないですよね?一度書き込まれるごとに改行したいのですが、改行コードが\nでは追加で書き込みができなくなってしまいました。$returnの値がゼロになってしまいファイルに何も書き込まれなくなってしまいました。 $return = fputs($fp, "$namen\n"); ←この部分に\nを書き足しました。  文字コードはUTF-8で書き、改行コードはLFで統一しています。  PHPの改行コードについてわかる方がいましたらおしえてください。  

    • 締切済み
    • PHP
  • fputsで改行できない

    $construction='aaa'; $explanation='bbb'; define(DATA, './data'); $fp = fopen(DATA . '/' . $name, 'w') or die('ファイルを開けません'); flock($fp, LOCK_EX); fputs($fp, $construction . "\\r\\n" . $explanation) or die ('ファイルに書き込めません'); fclose($fp); 作成されたファイルを開いてみると aaa\r\nbbbと表示され、改行されません。 "\\r\\n"ではなく"\\n"のみにしても同様です。 二十引用符にしているのに、改行されません。 fputsに複数の変数を同時に入れ、それぞれの間に改行をいれるにはどうすればよいでしょうか? 文字コードはShift-JISです。 ご教示頂けると幸いです。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • ファイルへの書き込み

    フォームに入力されたデータをCSVファイルに書き込みたいのですが、以下のようにすると追加で書き込みはできるのですが、ずっと改行されずに1行に書き込まれてしまうので、新しいデータを入れる際に改行されるようにしたいのですが、どのようにすればいいでしょうか? $fp = fopen(TEST_FILE,"a") or die("ファイルを開けません\n"); flock($fp, LOCK_EX); fputs($fp, "aaa")."\n"; flock($fp, LOCK_UN); fclose($fp);

    • ベストアンサー
    • PHP
  • ファイル作成

    $fp = fopen($filename1,"a+"); flock($fp,LOCK_EX); fputs($fp,$kisai); flock($fp,LOCK_UN); fclose($fp); としてファイルがなかったら作成するようにして$kisaiの内容を保存するようにしました。 それで問題なく実行できます。 しかし文字コードがANSIで保存されてしまいます。 UTF-8で保存させるようにするにはどうしたらよいでしょうか

    • ベストアンサー
    • PHP
  • windowsサーバでファイルに書き込みできない

    こんにちわ 先日サーバの移転でアイル(windows)に移項しました。 使用していたphpスクリプトでファイルに書き込む部分がなぜか動作せず、ログファイルの保存が出来なくなってしまいました。 $log ="log.csv"; $reg_com = $_POST['name'].",".$_POST['union']; $fp = fopen($log, "a"); flock($fp, LOCK_EX); fputs($fp, "$reg_com\n"); flock($fp, LOCK_UN); fclose($fp); Linuxサーバの再は上記で問題なくファイルに書き込みされていたのですが、なぜ動作しないのでしょうか? スクリプトの動作は、postされた内容をプログラムファイルと同じ階層のlog.csvに追記していくものになります。 問題点のご指摘をお願いします。

    • 締切済み
    • PHP
  • XMLで改行

    XMLのファイルの中身は↓です。省略しましたが。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE MOVIE SYSTEM "Chapter.dtd"> <CHAPTERNAME>はじめに</CHAPTERNAME>        ↑↑↑ 「はじめに」の部分に改行を入れて 「はじ めに」 と表示するにはどうしたらいいんでしょうか。 よろしくお願いいたします。

    • 締切済み
    • XML
  • phpを使ってxmlの追加書き出しについて教えてください

    現在flashからphpに位を渡して、そこからxmlで書き出すということをしています。 phpからxmlを作成することは、なんとか無事にできるのですが、この場合一つのXMLデータしか作成できません。 fopen($fname."a")を使って追加で作成しようとすると $buf ="<?xml version=\"1.0\" encoding=\"" . $encode."\" ?> \r\n"; が二重に作成されてエラーが出ます。なにか解決策はないでしょうか? お願いします。 ソース ------------------------------------------------------------ <? function xml_write($fname,$roottag,$id,$encode,$val) { $file = fopen($fname,"w"); // XMLヘッダ書き出し // $buf ="<?xml version=\"1.0\" encoding=\"" . $encode."\" ?> \r\n"; fputs($file,$buf); // XMLルート書き出し // fputs($file,"<".$roottag.">\r\n"); // XMLルート書き出し1 // fputs($file,"<".$id.">\r\n"); // XML本文書き出し // foreach($val as $key => $oneval) { fputs($file,"<".$key.">" . $oneval . "</".$key.">\r\n"); } // XMLルート書き出し1 // fputs($file,"</".$id.">\r\n"); // XMLルート終了 // fputs($file,"</".$roottag.">\r\n"); fclose($file); } xml_write("./test/test.xml","doc","object","Shift_JIS",$_POST); ?> -----------------------------------------------------------------

    • ベストアンサー
    • PHP
  • XMLで改行させたい

    Adobe Dreamweaver CS3でSpryの機能を使ってxmlからのデータを表示させたいと思っています。xmlの内容を改行させて表示したいのですが、可能でしょうか?全体的な流れとしては、phpファイルからフォームによって送信したものをxmlファイルに書き出して、それをサイトで表示したいと思っています。よろしくお願いいたします。

    • ベストアンサー
    • XML
  • ファイルの読み書きでエラー

    下記のようなプログラムでファイルからデータを読み、 データを加工して、ファイルに書き込んでいます。 しかし、頻繁にアクセスがあると、読み出しのエラーや ファイルの中身が消えてしまう症状も発生します。 (ファイルの中身が消えるのは読み出し時にデータが 読めないからかも知れません) エラーをなくす為にはどうしたら良いのでしょうか? 教えて下さい。 $cmdata = file($cmfile); //ファイルからデータを読む  ・  ・(データの加工)  ・ $fp = @fopen($cmfile,"w+"); flock($fp,LOCK_EX); for( $i=0; $i<count($cmdata); $i++ ) { fputs($fp, $cmdata[$i]); } //ファイルにデータを書く flock($fp,LOCK_UN); fclose($fp);

    • 締切済み
    • PHP
  • php4でのxml上書き

    はじめまして、phpでxmlの上書きをしたいのですが、 phpは <?php $xml_path = "gundam.xml"; $xml = file_get_contents( $xml_path ); $replace_key = "</robot>"; $add_xml = "<gundam>\n<pilot>シーブック</pilot>\n<mobilesuits>ガンダムF91</mobilesuits>\n</gundam>\n".$replace_key; $result = str_replace($replace_key,$add_xml,$xml); $fp = fopen($xml_path,"w+"); flock($fp, LOCK_EX); fwrite($fp,$result); fclose($fp); ?> xmlは <?xml version="1.0" encoding="Shift_JIS"?> <robot> <gundam> <pilot>アムロ</pilot> <mobilesuits>ガンダム</mobilesuits> </gundam> <gundam> <pilot>カミーユ</pilot> <mobilesuits>Zガンダム</mobilesuits> </gundam> <gundam> <pilot>ジュドー</pilot> <mobilesuits>ガンダムZZ</mobilesuits> </gundam> <gundam> <pilot>コウ</pilot> <mobilesuits>ガンダムGP01</mobilesuits> </gundam> <gundam> <pilot>クリス</pilot> <mobilesuits>ガンダムアレックス</mobilesuits> </gundam> </robot> と書いてあります。 最後にxmlを書き換えた部分を $fp = fopen($xml_path,"w+"); flock($fp, LOCK_EX); fwrite($fp,$result); fclose($fp); で上書きしたいのですができません。 何が問題なのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう