2017-06-03 70 views
0

我有一個xml文件,我用這個PHP函數file_get_contents()檢索它的數據。XML文件內容到文本區域和PHP:刪除字符替換

我的目的是提供此XML文件編輯器,因此XML內容字符串被加載在一個文本,然後進行編輯(如果需要),並保存file_put_contents()

在PHP返回的字符串包含替換字符( )。我怎樣才能刪除這個或找到更好的解決方案呢?

我的XML文件是這樣的:

<?xml version="1.0"?> 
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<RECORD> 
    <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
    <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 

而且它恢復成這樣:

<�?xml version="1.0"?> 
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<RECORD> 
    <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
    <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
+1

它實際上在ISO-8859-1中看起來像XML,你能保存在UTF-8中並再次檢查嗎? – Anton

+0

安東,只是做了它,它的工作......問題是,我必須使用此文件作爲Unicode,它不是由我生成的...任何PHP函數將返回的字符串轉換爲Unicode? –

+0

原始文件的編碼實際上是UTF-16,... –

回答

0

我發現這個功能(http://php.net/manual/pt_BR/function.iconv.php)的解決方案:

iconv("UTF-16", "UTF-8", $content); 

在哪裏$content是從我的XML文件返回數據的字符串。 由於編碼是UTF-16,只是將其翻譯爲UTF-8,現在它工作正常。

謝謝。

iconv('UTF-8', 'UTF-16', $content); 

否則到頭來你會在你的應用程序閱讀中國,下一次:**重要**

只要記得將其轉換回原來的編碼,保存其內容時

你加載它! :)