手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

simplexml xpath

SimpleXmlElement 在我们用的时候好象很多都是直接使用simplexml_load_string或者load_file。但事实上,SimpleXmlElement功能很强大,只是我们很多时候都忽略了?大多数人还在使用xml_create等函数?

SimpleXmlElement中最让人用的舒服的恐怕就是这个xpath了。例如这个官方的例子:

PHP代码
  1. <?php  
  2. $string = <<<XML  
  3. <a>  
  4.  <b>  
  5.   <c>text</c>  
  6.   <c>stuff</c>  
  7.  </b>  
  8.  <d>  
  9.   <c>code</c>  
  10.  </d>  
  11. </a>  
  12. XML;  
  13.   
  14. $xml = new SimpleXMLElement($string);  
  15.   
  16. /* Search for <a><b><c> */  
  17. $result = $xml->xpath('/a/b/c');  
  18.   
  19. while(list( , $node) = each($result)) {  
  20.     echo '/a/b/c: ',$node,"\n";  
  21. }  
  22.   
  23. /* Relative paths also work... */  
  24. $result = $xml->xpath('b/c');  
  25.   
  26. while(list( , $node) = each($result)) {  
  27.     echo 'b/c: ',$node,"\n";  
  28. }  
  29. ?>  
这个例子输出是:
XML/HTML代码
  1. /a/b/c: text  
  2. /a/b/c: stuff  
  3. b/c: text  
  4. b/c: stuff  

看看,是不是很方便?对于某个XML很大的情况就比较值得这样使用了。

Tags: simplexml, xpath

Editplus 自动检查语法

用惯了IDE写PHP,再次回到Editplus的时候总有点不太习惯,比如没有函数提示了(当然也可以自己打造)。不过。。语法检查总还是需要的,总不能自己程序传到服务器上后运行了才知道语法有问题吧?于是利用Editplus的小功能aftersave。改造了一下。

进入editplus的选项设置,点击左侧的User tools菜单,在右侧的Group and Tools下拉框中选择 AutoSave:after save。

大小: 49.06 K
尺寸: 469 x 376
浏览: 1948 次
点击打开新窗口浏览全图

在右侧的 add tool里选择 program。然后输入:标题,程序所在位置,以及参数。。

php语法检测是php.exe -l filename,这个可以通过命令行下运行 php -? 了解。然后要catch output,以及针对current file。。

OK,这样就over了。

看看效果?

大小: 39.2 K
尺寸: 463 x 243
浏览: 1819 次
点击打开新窗口浏览全图

Tags: editplus, php, syntax

Discuz Uchome 小技巧

discuz的ajaxpost功能有点强大,但缺点也很明显,如果ajaxpost提交一个FORM,那么返回的时候只能显示showmessage的内容,而不会主动跳转,因此这里就有一个小技巧 了。。

比如默认submit按钮这样操作:onclick="ajaxpost('formid')";之类的,我们可以先这样。。
onclick="$('__formid').innerText='';ajaxpost('formid');checkPostResult();";
含义其实很简单,先把ajaxpost提示信息所在的div内容清空。然后提交。最后,根据返回值来判断。。

JavaScript代码
  1. function checkPostResult(){  
  2.     var cid = setInterval(function(){  
  3.         if( $('__formid').innerText == 'success'){  
  4.                 alert('提交成功');  
  5.                 location.href='xxxxx.php';  
  6.                 clearInterval(cid);  
  7.         }  
  8.     },1000);  
  9. }  

这个处理也很简单,为什么是用setInterval和clearInterval,主要是由于ajax是异步操作,如果不用setInterval方法 ,那么在ajaxpost结束的时候,其实提示信息还没有append到提示信息所在的ID里,所以用setInterval方法先延迟然后循环处理最后再结束提示。。。

clearInterval用的不太对,但短时间内想不到更好的。先这样临时解决喽。

Tags: discuz, uchome, tips

dedecms 笔记:标签

资料均从网上收集,然后作了整理。。

注意,由于dedecms的模版TAG功能,其实是类似于XML,所以在使用的时候,一定要象XML一样正确闭合,否则,该区块将不变解析

一般来说,我们所使用的DEDECMS模板代码样式有如下几种:

XML/HTML代码
  1. {dede:标记名称 属性='值'/}  
  2. {dede:标记名称 属性='值'} {/dede:标记名称}  
  3. {dede:标记名称 属性='值'} 自定义样式模板(InnerText),即底层模板 {/dede:标记名称}
  4. 如果使用带底层模板的标记,必须严格用{dede:标记名称 属性='值'}{/dede:标记名称} 这种格式,否则会报错。

1、标记通用特性
(1) 短标记:
{dede:tagname.name/} 等同于 {dede:tagname name='' /}

{dede:global.name/}   外部变量      等同于 <?php echo $name; ?> 【其实这里应该是全局变量】
{dede:var.name/}      var数组       等同于 <?php echo $_vars['name']; ?>
{dede:field.name/}    field数组     等同于 <?php echo $fields['name']; ?>
{dede:cfg.name/}      系统配置变量 等同于 <?php echo $cfg_name; ?>【cfg已经是全局了,所以这个标签其实也可以写成{dede:global.cfg_name/}】


(2) 块标记:
{dede:tagname}
循环代码:
{/dede:tagname}

(3)include 语法:
{dede:include file=''/}
{dede:include filename=''/}
{dede:include file='文件名称' ismake='是否为dede板块模板(yes/no)'/}
例如: {dede:include filename="head.htm"/}
对文件的搜索路径为顺序为:绝对路径、include文件夹,CMS安装目录,CMS主模板目录

2、函数和PHP语法

if 条件
仅支持 if ,else ,else 直接用{else}表示,但不支持{else if}这样的语法 ,一般建议模板中不要使用太复杂的条件语法,如果确实有需要,可以直接使用 php 语法。

XML/HTML代码
  1. {dede:if 条件}  
  2.     a-block  
  3. {else}  
  4.     b-block  
  5. {/dede:if}  
条件中允许使用 var.name 、 global.name 、 field.name、cfg.name 表示相应的变量。
如:
XML/HTML代码
  1. {dede:if field.id>10 }  
  2. {/dede:if}  
php 代码块:
XML/HTML代码
  1. {dede:php  
  2. php 代码  
  3. /}  
XML/HTML代码
  1. {dede:php}  
  2. php代码  
  3. {/dede:php}  
......其它还在整理中

Tags: dedecms, 笔记, tag, 标签用法

typecho 发布 0.8release版本

算起来,这一个release版本的时间是挺长了。从5月25日到8月15日,跨度也挺大。
下载页面在:http://typecho.org/download,这次更新的内容不多,主要还是一些补丁和BUG的修复吧。

其实如果你对typecho有意见,你可以到 http://code.google.com/p/typecho的issue里进行提问和申请。
顺便说一声,如果你觉得官方的插件太少,你可以直接从SVN里下载全部版本,里面包含了几乎所有的插件。还有一些文档也可以查看

svn的地址是:svn checkout http://typecho.googlecode.com/svn/trunk/ typecho-read-only

http://code.google.com/p/typecho/source/list,看这里就可以了解每一个小版本改动了些什么东西。当然一些细小的改动,就没有description了。其实说起来typecho的东西对于很多人来说算是比较复杂的。几乎所有的组件都基于plugin或者widget了,对效率还是会有影响的吧。。。

Tags: typecho, release