2017-06-03 160 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); 

否则到头来你会在你的应用程序阅读中国,下一次:**重要**

只要记得将其转换回原来的编码,保存其内容时

你加载它! :)