当前位置:  编程技术>php
本页文章导读:
    ▪php调用WebService传递时间参数的方法      在与其他系统进行WEBSERVICE对接的时候发现,PHP无法识别.NET下的时间参数。 分析: PHP中的调用WEBSERVICE代码是手工编写xml格式的数据包来实现的,并不像我们.NET 和 JAVA中一样可以利用工具来生.........
    ▪php读取xml的类      php读取xml的类,有需要的朋友,可以参考下。   代码示例: <?php #------------------------------------------ # # XML Library, by Keith Devens, version 1.2b # <a href="http://keithdevens.com/software/phpxml" target="_b.........
    ▪php URL各部分获取方法(全局变量)      php URL各部分获取方法(全局变量),主要介绍php全局变量$_SERVER的用法,有需要的朋友,可以参考下。 1、$_SESSION['PHP_SELF'] — 获取当前正在执行脚本的文件名 2、$_SERVER['SERVER_PROTOCOL'] — 请求页.........

[1]php调用WebService传递时间参数的方法
    来源: 互联网  发布时间: 2013-12-24

在与其他系统进行WEBSERVICE对接的时候发现,PHP无法识别.NET下的时间参数。

分析:
PHP中的调用WEBSERVICE代码是手工编写xml格式的数据包来实现的,并不像我们.NET 和 JAVA中一样可以利用工具来生成代理类.
所以导致了,PHP在与其他系统语言对接的时候需要处理,不同编程语言直接的兼容问题..NET中的时间类型就是一个例子.

解决:
经过分析,既然,PHP是以纯XML的格式的数据包来进行调用,那么,按照.NET的时间格式,传递完全一样格式的时间字符串来替代时间参数,是否可以让.NET识别?
经过验证,这种做法可行.必须传递类似的字符串作为时间格式,.NET才能识别。
<timeBill>2010-04-20T17:46:28.609375+08:00</timeBill>


    
[2]php读取xml的类
    来源: 互联网  发布时间: 2013-12-24

php读取xml的类,有需要的朋友,可以参考下。
 

代码示例:

<?php
#------------------------------------------
#
# XML Library, by Keith Devens, version 1.2b
# <a href="http://keithdevens.com/software/phpxml" target="_blank">http://keithdevens.com/software/phpxml</a>
#
# This code is Open Source, released under terms similar to the Artistic License.
# Read the license at <a href="http://keithdevens.com/software/license" target="_blank">http://keithdevens.com/software/license</a>
#
#------------------------------------------
# XML_unserialize: takes raw XML as a parameter (a string)
# and returns an equivalent PHP data structure
#------------------------------------------
function & XML_unserialize(&$xml){
    $xml_parser = &new XML();
    $data = &$xml_parser->parse($xml);
    $xml_parser->destruct();
    return $data;
}
-----------------------#####
# XML_serialize: serializes any PHP data structure into XML
# Takes one parameter: the data to serialize. Must be an array.
-----------------------#
function & XML_serialize(&$data, $level = 0, $prior_key = NULL){
    if($level == 0){ ob_start(); echo '<?xml version="1.0" ?>',"\n"; }
    while(list($key, $value) = each($data))
        if(!strpos($key, ' attr')) #if it's not an attribute
            #we don't treat attributes by themselves, so for an empty element
            # that has attributes you still need to set the element to NULL

            if(is_array($value) and array_key_exists(0, $value)){
                XML_serialize($value, $level, $key);
            }else{
                $tag = $prior_key ? $prior_key : $key;
                echo str_repeat("\t", $level),'<',$tag;
                if(array_key_exists("$key attr", $data)){ #if there's an attribute for this element
                    while(list($attr_name, $attr_value) = each($data["$key attr"]))
                        echo ' ',$attr_name,'="',htmlspecialchars()($attr_value),'"';
                    reset($data["$key attr"]);
                }

                if(is_null($value)) echo " />\n";
                elseif(!is_array($value)) echo '>',htmlspecialchars($value),"</$tag>\n";
                else echo ">\n",XML_serialize($value, $level+1),str_repeat("\t", $level),"</$tag>\n";
            }
    reset($data);
    if($level == 0){ $str = &ob_get_contents(); ob_end_clean(); return $str; }
}
#-----------------------#
# XML class: utility class to be used with PHP's XML handling functions
#-----------------------#
class XML{
    var $parser;   #a reference to the XML parser
    var $document; #the entire XML structure built up so far
    var $parent;   #a pointer to the current parent - the parent will be an array
    var $stack;    #a stack of the most recent parent at each nesting level
    var $last_opened_tag; #keeps track of the last tag opened.

    function XML(){
         $this->parser = &xml_parser_create();
        xml_parser_set_option(&$this->parser, XML_OPTION_CASE_FOLDING, false);
        xml_set_object(&$this->parser, &$this);
        xml_set_element_handler(&$this->parser, 'open','close');
        xml_set_character_data_handler(&$this->parser, 'data');
    }
    function destruct(){ xml_parser_free(&$this->parser); }
    function & parse(&$data){
        $this->document = array();
        $this->stack    = array();
        $this->parent   = &$this->document;
        return xml_parse(&$this->parser, &$data, true) ? $this->document : NULL;
    }
    function open(&$parser, $tag, $attributes){
        $this->data = ''; #stores temporary cdata
        $this->last_opened_tag = $tag;
        if(is_array($this->parent) and array_key_exists($tag,$this->parent)){ #if you've seen this tag before
            if(is_array($this->parent[$tag]) and array_key_exists(0,$this->parent[$tag])){ #if the keys are numeric
                #this is the third or later instance of $tag we've come across
                $key = count_numeric_items($this->parent[$tag]);
            }else{
                #this is the second instance of $tag that we've seen. shift around
                if(array_key_exists("$tag attr",$this->parent)){
                    $arr = array('0 attr'=>&$this->parent["$tag attr"], &$this->parent[$tag]);
                    unset($this->parent["$tag attr"]);
                }else{
                    $arr = array(&$this->parent[$tag]);
                }
                $this->parent[$tag] = &$arr;
                $key = 1;
            }
            $this->parent = &$this->parent[$tag];
        }else{
            $key = $tag;
        }
        if($attributes) $this->parent["$key attr"] = $attributes;
        $this->parent  = &$this->parent[$key];
        $this->stack[] = &$this->parent;
    }
    function data(&$parser, $data){
        if($this->last_opened_tag != NULL) #you don't need to store whitespace in between tags
            $this->data .= $data;
    }
    function close(&$parser, $tag){
        if($this->last_opened_tag == $tag){
            $this->parent = $this->data;
            $this->last_opened_tag = NULL;
        }
        array_pop($this->stack);
        if($this->stack) $this->parent = &$this->stack[count($this->stack)-1];
    }
}
function count_numeric_items(&$array){
    return is_array($array) ? count(array_filter(array_keys()($array), 'is_numeric')) : 0;
}
?>

应用实例,XML来源地址:http://data.cnaz.com/spread/?tid=7&sid=42845&order=date&flags=desc&num=50
&page=1&hosts=pic.ttiankan.com&code=xml
 

代码示例:

<?php  
include('xml.php');    //引用PHP XML操作类  

$page=$_GET['page'];

if(empty($page) || !is_numeric($page)) $page=1;

//偶像明星
$xml = file_get_contents('http://data.cnaz.com/spread/?tid=7&sid=42845&order=date&flags=desc&num=50
&page='.$page.'&hosts=pic.ttiankan.com&code=xml');


//$xml = file_get_contents("php://input");    //读取POST过来的输入流  
$data=XML_unserialize($xml);  

$item=$data['rss']['channel'];

$link  = $item['link'];
$description= $item['description'];
$keywords = $item['keywords'];
$totalnum = $item['totalnum'];
$usetime = $item['usetime'];

$totalpage=ceil($totalnum/50);

echo('<div >关键字:'.$keywords.'  ');
echo('总记录数:'.$totalnum.', 每页显示50条,一共有'.$totalpage.'页, 当前是第'.$page.'页</div>');

$item=$item['item'];

echo('
 <style>
 *{font-size:12px;color:#000;font-family:arial;}
 a{text-decoration:none;}
 a:hover{text-decoration:underline;}
 .tbl{border-top:1px #ccc solid;border-left:1px #ccc solid;}
 .tbl td{padding:4px 5px;border-bottom:1px #ccc solid;border-right:1px #ccc solid;}
 </style>
 ');

echo('
 <table cellspacing="0" cellpadding="0" border="0" width="600">
  <tr>
   <td>分类</td>
   <td>标题</td>
   <td>链接</td>
  </tr>
 ');

 foreach($item as $list)
 {
  echo('<tr>');
  echo('<td>'.$list['sort'].'</td>');
  echo('<td><a title="'.$list['description'].'" href="'.$list['photo'].'" target="_blank">'.$list['title'].'</a></td>');
  echo('<td><a href="'.$list['link'].'" target="_blank">'.$list['link'].'</a></td>');
  echo('</tr>');
 }

 echo('<tr>
   <td colspan="3">
  ');
 if($page>1) echo('<a href="/blog_article/b/page/.html'.($page-1).'">上一页</a>   ');
 if($page<$totalpage) echo('<a href="/blog_article/b/page/.html'.($page+1).'">下一页</a>');
 echo('</td></tr>');

echo('</table>');
?> 

编辑为您推荐:
php操作xml的实例代码
php读写xml文件的方法介绍
php使用函数方式输出XML文件的例子
php使用函数方式读取XML文件的例子
PHP读取XML的几种方法
PHP读取XML值的代码
php操作xml的各种方法解析
PHP生成xml文件的4种方法
php生成xml简单实例详解
php向xml中添加数据一例
实例学习PHP操作XML的类DOMDocument


    
[3]php URL各部分获取方法(全局变量)
    来源: 互联网  发布时间: 2013-12-24

php URL各部分获取方法(全局变量),主要介绍php全局变量$_SERVER的用法,有需要的朋友,可以参考下。

1、$_SESSION['PHP_SELF'] — 获取当前正在执行脚本的文件名
2、$_SERVER['SERVER_PROTOCOL'] — 请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。
3、$_SERVER['REQUEST_TIME'] — 请求开始时的时间戳。从 PHP 5.1.0 起有效。和time函数效果一样。
4、$_SERVER['argv'] — 传递给该脚本的参数。我试了下,get方法可以得到$_SERVER['argv'][0];post方法无法给他赋值。
5、$_SERVER['SERVER_NAME'] — 返回当前主机名。
6、$_SERVER['SERVER_SOFTWARE'] — 服务器标识的字串,在响应请求时的头信息中给出。 如Microsoft-IIS/6.0
7、$_SERVER['REQUEST_METHOD'] — 访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。
8、$_SERVER['QUERY_STRING'] — 查询(query)的字符串(URL 中第一个问号 ? 之后的内容)。
9、$_SERVER['DOCUMENT_ROOT'] — 当前运行脚本所在的文档根目录。在服务器配置文件中定义。 如E:\server
10、$_SERVER['HTTP_ACCEPT'] — 当前请求的 Accept: 头信息的内容。
11、$_SERVER['HTTP_ACCEPT_CHARSET'] — 当前请求的 Accept-Charset: 头信息的内容。例如:“iso-8859-1,*,utf-8”。
12、$_SERVER['HTTP_ACCEPT_ENCODING'] — 当前请求的 Accept-Encoding: 头信息的内容。例如:“gzip”。
13、$_SERVER['HTTP_ACCEPT_LANGUAGE'] — 当前请求的 Accept-Language: 头信息的内容。例如:“en”。
14、$_SERVER['HTTP_CONNECTION'] — 当前请求的 Connection: 头信息的内容。例如:“Keep-Alive”。
15、$_SERVER['HTTP_HOST'] — 当前请求的 Host: 头信息的内容。
16、$_SERVER['HTTP_REFERER'] — 链接到当前页面的前一页面的 URL 地址。
17、$_SERVER['HTTP_USER_AGENT'] — 返回用户使用的浏览器信息。也可以使用 get_browser() 得到此信息。
18、$_SERVER['HTTPS'] — 如果通过https访问,则被设为一个非空的值,否则返回off.
19、$_SERVER['REMOTE_ADDR'] — 正在浏览当前页面用户的 IP 地址。
20、$_SERVER['REMOTE_HOST'] — 正在浏览当前页面用户的主机名。反向域名解析基于该用户的 REMOTE_ADDR。如本地测试返回127.0.0.1
21、$_SERVER['REMOTE_PORT'] — 用户连接到服务器时所使用的端口。我在本机测试没通过,不知道什么原因。
22、$_SERVER['SCRIPT_FILENAME'] — 当前执行脚本的绝对路径名。如返回E:\server\index.php
23、$_SERVER['SERVER_ADMIN'] — 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值
24、$_SERVER['SERVER_PORT'] — 服务器所使用的端口。默认为“80”。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。
25、$_SERVER['SERVER_SIGNATURE'] — 包含服务器版本和虚拟主机名的字符串。
26、$_SERVER['PATH_TRANSLATED'] — 当前脚本所在文件系统(不是文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。
Apache 2 用 户可以使用 httpd.conf 中的 AcceptPathInfo On 来定义 PATH_INFO。
27、$_SERVER['SCRIPT_NAME'] — 包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 包含当前文件的绝对路径和文件名(例如包含文件)。
28、$_SERVER['REQUEST_URI'] — 访问此页面所需的 URI。例如,“/index.html”。
29、$_SERVER['PHP_AUTH_DIGEST'] — 当作为 Apache 模块运行时,进行 HTTP Digest 认证的过程中,此变量被设置成客户端发送的“Authorization”HTTP 头内容(以便作进一步的认证操作)。
30、$_SERVER['PHP_AUTH_USER']– 当 PHP 运行在 Apache 或 IIS(PHP 5 是 ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。
31、$_SERVER['PHP_AUTH_PW'] — 当 PHP 运行在 Apache 或 IIS(PHP 5 是 ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。
32、$_SERVER['AUTH_TYPE']–当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型。

附:使用parse_url函数获取URL各个部分

示例1:
 

代码示例:
$url = "http://www.electrictoolbox.com/php-extract-domain-from-full-url/";
$parts = parse_url(/blog_article/$url/index.html);

输出:
Array
(
[scheme] => http
[host] => www.electrictoolbox.com
[path] => /php-extract-domain-from-full-url/
)

示例2:
 

代码示例:
<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url(/blog_article/$url/index.html));
echo parse_url(/blog_article/$url, PHP_URL_PATH/index.html);
?>

输出:
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)

很容易便分解出一个URL的各个部,取指定的部分出来也很容易:
echo parse_url(/blog_article/$url, PHP_URL_PATH/index.html);
在第二个参数中,设定如下的参数:
PHP_URL_SCHEME, PHP_URL_HOST, PHP_URL_PORT, PHP_URL_USER, PHP_URL_PASS, PHP_URL_PATH, PHP_URL_QUERY or PHP_URL_FRAGMENT。


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3