Submitted by gouki on 2010, September 8, 9:07 PM
SimpleXmlElement 在我们用的时候好象很多都是直接使用simplexml_load_string或者load_file。但事实上,SimpleXmlElement功能很强大,只是我们很多时候都忽略了?大多数人还在使用xml_create等函数?
SimpleXmlElement中最让人用的舒服的恐怕就是这个xpath了。例如这个官方的例子:
PHP代码
- <?php
- $string = <<<XML
- <a>
- <b>
- <c>text</c>
- <c>stuff</c>
- </b>
- <d>
- <c>code</c>
- </d>
- </a>
- XML;
-
- $xml = new SimpleXMLElement($string);
-
-
- $result = $xml->xpath('/a/b/c');
-
- while(list( , $node) = each($result)) {
- echo '/a/b/c: ',$node,"\n";
- }
-
-
- $result = $xml->xpath('b/c');
-
- while(list( , $node) = each($result)) {
- echo 'b/c: ',$node,"\n";
- }
- ?>
这个例子输出是:
XML/HTML代码
- /a/b/c: text
- /a/b/c: stuff
- b/c: text
- b/c: stuff
看看,是不是很方便?对于某个XML很大的情况就比较值得这样使用了。
Tags: simplexml, xpath
PHP | 评论:0
| 阅读:17522
Submitted by gouki on 2010, September 3, 11:10 AM
用惯了IDE写PHP,再次回到Editplus的时候总有点不太习惯,比如没有函数提示了(当然也可以自己打造)。不过。。语法检查总还是需要的,总不能自己程序传到服务器上后运行了才知道语法有问题吧?于是利用Editplus的小功能aftersave。改造了一下。
进入editplus的选项设置,点击左侧的User tools菜单,在右侧的Group and Tools下拉框中选择 AutoSave:after save。

在右侧的 add tool里选择 program。然后输入:标题,程序所在位置,以及参数。。
php语法检测是php.exe -l filename,这个可以通过命令行下运行 php -? 了解。然后要catch output,以及针对current file。。
OK,这样就over了。
看看效果?

Tags: editplus, php, syntax
PHP | 评论:0
| 阅读:25945
Submitted by gouki on 2010, August 20, 10:33 PM
discuz的ajaxpost功能有点强大,但缺点也很明显,如果ajaxpost提交一个FORM,那么返回的时候只能显示showmessage的内容,而不会主动跳转,因此这里就有一个小技巧 了。。
比如默认submit按钮这样操作:onclick="ajaxpost('formid')";之类的,我们可以先这样。。
onclick="$('__formid').innerText='';ajaxpost('formid');checkPostResult();";
含义其实很简单,先把ajaxpost提示信息所在的div内容清空。然后提交。最后,根据返回值来判断。。
JavaScript代码
- function checkPostResult(){
- var cid = setInterval(function(){
- if( $('__formid').innerText == 'success'){
- alert('提交成功');
- location.href='xxxxx.php';
- clearInterval(cid);
- }
- },1000);
- }
这个处理也很简单,为什么是用setInterval和clearInterval,主要是由于ajax是异步操作,如果不用setInterval方法 ,那么在ajaxpost结束的时候,其实提示信息还没有append到提示信息所在的ID里,所以用setInterval方法先延迟然后循环处理最后再结束提示。。。
clearInterval用的不太对,但短时间内想不到更好的。先这样临时解决喽。
Tags: discuz, uchome, tips
PHP | 评论:0
| 阅读:16958
Submitted by gouki on 2010, August 16, 11:36 AM
资料均从网上收集,然后作了整理。。
注意,由于dedecms的模版TAG功能,其实是类似于XML,所以在使用的时候,一定要象XML一样正确闭合,否则,该区块将不变解析
一般来说,我们所使用的DEDECMS模板代码样式有如下几种:
XML/HTML代码
- {dede:标记名称 属性='值'/}
- {dede:标记名称 属性='值'} {/dede:标记名称}
- {dede:标记名称 属性='值'} 自定义样式模板(InnerText),即底层模板 {/dede:标记名称}
- 如果使用带底层模板的标记,必须严格用{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代码
- {dede:if 条件}
- a-block
- {else}
- b-block
- {/dede:if}
条件中允许使用 var.name 、 global.name 、 field.name、cfg.name 表示相应的变量。
如:
XML/HTML代码
- {dede:if field.id>10 }
- {/dede:if}
php 代码块:
XML/HTML代码
- {dede:php
- php 代码
- /}
或
XML/HTML代码
- {dede:php}
- php代码
- {/dede:php}
......其它还在整理中
Tags: dedecms, 笔记, tag, 标签用法
PHP | 评论:0
| 阅读:19208
Submitted by gouki on 2010, August 16, 12:22 AM
算起来,这一个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
PHP | 评论:1
| 阅读:21637