2010-12-17 23 views
0

xmlファイルを生成するSQLデータベースがあります。このXMLファイルはWebサーバーに置かれ、PHPファイルによって解析されます。残念なことにランダムに、xmlファイルに改行があり、解析できない場合があります。あなたがライン12-14から見ることができるように削除できないxmlファイル内の説明できない行番号

http://imgur.com/jNgiE

。改行があります。しかし、なぜ私は考えていない。私はキャリッジリターンと改行文字を削除するスクリプトも書いていましたが、改行はまだ残っています。誰にでもアイデアはありますか?

私はメモ帳を使用している参照
$inputXML = file_get_contents("ukso.xml"); 
$fixedXML = str_replace("\r","",$inputXML); 
$fixedXML = str_replace("\n","",$inputXML); 
$fixedXML = str_replace(" ","",$inputXML); 
$myFile = "ukso.xml"; 
print $fixedXML; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
fwrite($fh, $fixedXML); 
fclose($fh); 

答えて

4

改行を削除するためのコードが壊れています。次のように変更してください。

$inputXML = file_get_contents("ukso.xml"); 
$fixedXML = str_replace("\r","",$inputXML); 
$fixedXML = str_replace("\n","",$fixedXML); // note: reference the correct variable here 
$fixedXML = str_replace(" ","",$fixedXML); // and here. 
$myFile = "ukso.xml"; 
print $fixedXML; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
fwrite($fh, $fixedXML); 
fclose($fh); 

コードは2重スペースのみを切り捨ててあります。

+0

ええと、私はこれに落ちました<?php $ inputXML = file_get_contents( "ukso.xml"); $ fixedXML = str_replace( "\ r"、 "、$ inputXML); $ myFile = "ukso.xml"; print $ fixedXML; $ fh = fopen($ myFile、 'w')またはdie( "can not open file"); fwrite($ fh、$ fixedXML); fclose($ fh); ?>でもまだ運がありません – Matt

+1

Chrisのポイントは、すべてのstr_replacesを使用していないことです。最初の呼び出しの後、新しい変数($ fixedXML)でstr_replaceを実行する必要があります。あなたのコードでは、それを同じ元の変数で繰り返し実行しています。あなたの代わりにChrisのコードを試してみてください。 – enobrev

+0

または$ fixedXML = str_replace( "\ r"、 ""、str_replace( "\ n"、 ""、str_replace( ""、$ inputXML)));を試してください。 –

1

++

ビューショーのシンボル・ショーにすべての文字を移動します。これは、ファイル内にどの文字があるかを正確に示します。

それ以外の場合は、改行が長すぎる可能性があります。 XMLファイルは、通常、タグの最後に改行を含むように設計されており、プログラムのどこかで行の長さが長すぎる状況に陥っている可能性があります。 (多くの場合、固定バッファを作成してできるだけ読み込みますが、長すぎるとプログラムがラインを切り詰めることがあります)

+0

または、16進エディタを使用します。 – enobrev

+0

ありがとう!シンボルを表示した後、それらの位置にCRが表示されました。私はキャリッジリターンを前提としています。だから問題は私のPHPスクリプトと思いますか?しかし、何が間違っているのでしょうか? – Matt

+0

@マット:下記の私の答えを見てください。 – NotMe

関連する問題