XML文件内容到文本区域和PHP:删除字符替换

时间:2017-06-03 20:01:30

标签: php xml

我有一个xml文件,我用这个PHP函数file_get_contents()检索它的数据。

我的目的是为此XML文件提供一个编辑器,因此XML内容字符串将加载到textarea中,然后进行编辑(如果需要),并保存为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 个答案:

答案 0 :(得分: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);

否则,下次加载时,您最终会在应用程序中阅读中文! :)