解决php array数组生成xml文件汉字编码问题

在 php 数组转xml我们在php中学会这样来写

 代码如下 复制代码

function array2xml($array, $xml = false){
    if($xml === false){
        $xml = new SimpleXMLElement('<root/>');
    }
    foreach($array as $key => $value){
        if(is_array($value)){
            array2xml($value, $xml->addChild($key));
        }else{
            $xml->addChild($key, $value);
        }
    }
    return $xml->asXML();
}
 
header('Content-type: text/xml');
print array2xml($array);

当内容出现汉字时会出现为空的情况

解决办法是转编码处理

 代码如下 复制代码

 
function array2xml($array, $xml = false){
    if($xml === false){
        $xml = new SimpleXMLElement('<root/>');
    }
    foreach($array as $key => $value){
        if(is_array($value)){
            array2xml($value, $xml->addChild($key));
        }else{
           
//$value=utf8_encode($value);
 
            if (preg_match("/([x81-xfe][x40-xfe])/", $value, $match)) {
                $value = iconv('gbk', 'utf-8', $value);  
//判断是否有汉字出现
            }
            $xml->addChild($key, $value);
        }
    }
    return $xml->asXML();
}

后面给大家另一些关于汉字正则实例

1.判断字符串是否全是汉字

 代码如下 复制代码

<?php
    $str = '全部是汉字测试';
    if (preg_match_all("/^([x81-xfe][x40-xfe])+$/", $str, $match)) {
        echo '全部是汉字'; 
    } else {
        echo '不全是汉字';
    }
?>

当$str = '全部是汉字测试'; 时输出"全部是汉字";
当$str = 'all全部是汉字测试'; 时输出"不全是汉字";

时间: 2024-10-23 19:57:03

解决php array数组生成xml文件汉字编码问题的相关文章

php array数组生成csv文件

例  代码如下 复制代码 <?php $data = array(         array( 'row_1_col_1', 'row_1_col_2', 'row_1_col_3' ),         array( 'row_2_col_1', 'row_2_col_2', 'row_2_col_3' ),         array( 'row_3_col_1', 'row_3_col_2', 'row_3_col_3' ),     ); $filename = "example

PHP数组生成XML格式数据的封装类实例_php技巧

本文实例讲述了PHP数组生成XML格式数据的封装类.分享给大家供大家参考,具体如下: 类库代码:MakeXML.php: <?php /** * MakeXML * * @author Lin Jiong(slime09@gmail.com) * @version v1.0 * @license Copyright (c) 2009 Lin Jiong (www.cn09.com) * The LGPL (http://www.gnu.org/licenses/lgpl.html) licens

使用PHP生成XML文件的四种方法

  使用PHP生成XML文件的四种方法   content1 2009-10-11 content2 2009-11-11   [直接生成字符串] 方法1:使用纯粹的PHP代码生成字符串,并把这个字符串写入一个以XML为后缀的文件.这是最原始的生成XML的方法,不过有效! PHP代码如下: $data_array = array( array( 'title' => 'title1', 'content' => 'content1', 'pubdate' => '2009-10-11',

PHP输出生成XML文件实例程序

方法一  代码如下 复制代码 function xml_out($content, $charset = 'utf-8') {  @header("Expires: -1");  @header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);  @header("Pragma: no-cache");  @header("

用VB将WORD文档(或其他的二进制数据)生成xml文件并互相转换

word|xml|二进制|生成xml|数据|转换 用vb将word文档(或其他的二进制数据)生成xml文件并互相转换1.    建立一个新的vb工程2.    引用 Microsoft XML,版本 2.0 或以上3.    在窗体form1上建立按钮 cmdCreateXML 和 cmdGetBinary 代码:Option ExplicitDim oDoc As DOMDocumentDim DOCINPATH As StringDim XMLOUTPATH As StringDim DOC

根据查询结果,生成XML文件

xml|生成xml  /* 'bcp' 不是内部或外部命令,也不是可运行的程序? 看看在C:\Program Files\Microsoft SQL Server\80\Tools\Binn里面有没有bcp.exe这个文件然后看看path里面加C:\Program Files\Microsoft SQL Server\80\Tools\Binn这个目录没有. 右键我的电脑--属性--高级--环境变量--在系统变量中找到path--编辑 在变量值的最后加上: C:\Program Files\Mi

SQL Server根据查询结果,生成XML文件

server|xml|生成xml *'bcp' 不是内部或外部命令,也不是可运行的程序? 看看在C:\Program Files\Microsoft SQL Server\80\Tools\Binn里面有没有bcp.exe这个文件然后看看path里面加C:\Program Files\Microsoft SQL Server\80\Tools\Binn这个目录没有. 右键我的电脑--属性--高级--环境变量--在系统变量中找到path--编辑 在变量值的最后加上: C:\Program File

dom解析和生成XML文件

使用这种方式解析时,需要使用node.getNodeType() == Node.ELEMENT_NODE判断结点是否为元素结点,否则会输出很多#text(结点前有空格存在的原因). 完成的XML解析和生成代码如下: package test; import java.io.*; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.t

java 生成XML文件后,能不能去掉其中的根节点,但是不能删除根节点中的子节点内容

问题描述 java 生成XML文件后,能不能去掉其中的根节点,但是不能删除根节点中的子节点内容 比如 这个,生成的XML文件格式内容为: <?xml version=""1.0"" encoding=""UTF-8""?> <!--查询行号--> <!--机构码--> <!--公共交易机构名称--> <!--交易来源--> <!--交易名称--> <