Top Words:  海阔凭鱼跃,天高任鸟飞。(古诗诗话)

子雨轩网络

PHP互联网技术,互联网文摘,PHP技术,WEB开发,SEO,WAP技术,linux系统

Home » index.php » archives » PHP

Smarty模版引擎的常用知识点

Smarty模版引擎的一些基本知识点。
Smarty保留变量:
{$smarty.*}可以访问页面请求变量诸如get,post,cookies,server,enviroment和session变量
{$smarty.now}变量用于访问 当前时间戳.
{$smarty.const._MY_CONST_VAL}访问php常量
{$smarty.capture}访问{capture}{/capture}截取的输出
{$smarty.config}问已经加载的config变量
{$smarty.section}, {$smarty.foreach}访问’section’和’foreach’循环的属性
{$smarty.template}这个变量包含了当前被处理的模板的名字.
Smarty内建函数:
capture                                缓存块
config_load                        加载配置文件
foreach,foreachelse         遍历数组
include                                包含普通文件
字串5
include_php                       包含PHP脚本
insert                                   插入一个函数执行的结果
if,elseif,else                       IF语句
ldelim,rdelim                     Smarty的左/右限定符
literal                                   说明一个字符串块(可以把Javascrīpt包含在块中)
php                                      说明一个PHP脚本块 字串7
section,sectionelse         复杂的循环(类似for循环)
参数:
name
loop
start
step
max
show
section内部或外部可用属性:
index                  当前循环的记数下标
index_prev        当前循环的前一个下标
index_next        当前循环后一个下标
iteration             当前循环的行号
first                     是否为循环的开始 字串1
last                     是否为循环的结束
rownum             iteration的别名
loop                    循环结束后,最后一个index值
show                  section参数。决定是否显示循环结果
total                    循环总次数
strip                    过滤掉块中的空格等多余HTML…
字串7
常规函数:
assign                           给某个变量赋值
counter                          计数器
cycle                               可以用来控制<tr>与<tr>之间的不同颜色
debug
fetch                                 可以fetch一个文件,用file参数指定
html_checkboxes          构造checkbox
html_image                    构造image字串9

html_options                  构造select的option选项
html_radios                    构造radio
html_select_date          构造一个日期选择select
html_select_time          构造一个时间选择select
html_table                      构造一个table,构造时可以向table中加入数据
math                                为了在模版中能够计算一个表达式的值
mailto                              构造一个E-Mail连接.可以选择多个参数 字串2
popup_init                      初始化popup使用JS(就是包含处理popup的JS文件)
popup                              构造一个弹出窗口.有丰富的参数控制
textformat                        将textformat块按照制定的参数格式化

Smarty foreach 循环次数 首次 末次
foreach,foreachelse
{foreach from=$variable key=key name=name iteam=value}
{$variable|@count}     // 获取数组长度
{$smarty.foreach.loop.iindex}    // [...]

  • Hotmail
  • LinkedIn
  • Yahoo Mail
  • Yahoo Messenger
  • Google Bookmarks
  • Share/Bookmark

正则表达式详解

正则表达式
正则表达式是以文本描述字符组合的模式。在代码搜索中使用它们有助于描述一些概念,例如以“以‘var’开始的行”和“包含数字的属性值”。
下表列出了在正则表达式中使用的特殊字符、其含义和用法示例。若要搜索包含该表中某一特殊字符的文本,请在特殊字符前面附加一个反斜杠,令其“转义”。例如,若要在
some conditions apply*
短语中搜索实际的星号,您的搜索模式应类似于:apply\*。如果您没有令星号转义,您将找到“apply”的所有匹配项(以及“appl”、“applyy”和“applyyy”的所有匹配项),而不只是后面跟有星号的那些匹配项。

字符

匹配

示例

^

输入或行的起始部分。

^T 匹配“This good earth”中的“T”,但与“Uncle Tom’s Cabin”中的“T”不匹配

$

输入或行的结尾部分。

h$ 匹配“teach”中的“h”,但与“teacher”中的“h”不匹配

*

0 个或多个前置字符。

um* 匹配“rum”中的“um”、“yummy”中的“umm”和“huge”中的“u”

+

1 个或多个前置字符。

um+ 匹配“rum”中的“um”和“yummy”中的“umm”,但在“huge”中没有任何匹配项

?

前置字符最多出现一次(即,指示前置字符是可选的)。

st?on 匹配“Johnson”中的“son”和“Johnston”中的“ston”,但在“Appleton”或“tension”中没有任何匹配项

.

除换行符外的任何单字符。

.an 匹配短语“bran muffins can be tasty”中的“ran”和“can”

x|y

x 或 y。

FF0000|0000FF 匹配 bgcolor=”#FF0000”中的“FF0000”和 font color=”#0000FF”中的“0000FF”

{n}

恰好 n 个前置字符。

o{2} 匹配“loom”中的“oo”和“mooooo”中前两个“o”,但在“money”中没有任何匹配项

{n,m}

至少 n 个、至多 m 个前置字符。

F{2,4} 匹配“#FF0000”中的“FF”和“#FFFFFF”中的前四个“F”

[abc]

用括号括起来的字符中的任何一个字符。用连字符指定某一范围的字符(例如,[a-f] 等效于 [abcdef])。

[e-g] 匹配“bed”中的“e”、folly”中的“f”和“guard”中的“g”

[^abc]

未在括号中括起来的任何字符。用连字符指定某一范围的字符(例如,[^a-f] 等效于[^abcdef])。

[^aeiou] 最初匹配“orange”中的“r”、“book”中的“b”和“eek!”中的“k”

\b

词边界(例如空格或回车符)。

\bb 匹配“book”中的“b”,但在“goober”或“snob”中没有任何匹配项

\B

词边界之外的任何内容。

\Bb 匹配“goober”中的“b”,但在“book”中没有任何匹配项

\d

任何数字字符。等效于 [0-9]。

\d 匹配“C3PO”中的“3”和“apartment 2G”中的“2”

\D

任何非数字字符。等效于 [^0-9]。

\D 匹配“900S”中的“S”和“Q45”中的“Q”

\f

换页符。

\n

换行符。

\r

回车符。

\s

任何单个空白字符,包括空格、制表符、换页符或换行符。

\sbook 匹配“blue book”中的“book”,但在“notebook”中没有任何匹配项

\S

任何单个非空白字符。

\Sbook 匹配“notebook”中的“book”,但在“blue book”中没有任何匹配项

\t

制表符。

\w

任何字母数字字符,包括下划线。等效于 [A-Za-z0-9_]。

b\w* 匹配“the [...]

  • Hotmail
  • LinkedIn
  • Yahoo Mail
  • Yahoo Messenger
  • Google Bookmarks
  • Share/Bookmark

MySQL数据库增加新用户权限

有2个不同的方法增加用户:通过使用GRANT语句或通过直接操作MySQL授权表。比较好的方法是使用GRANT语句,因为他们是更简明并且好像错误少些。
下面的例子显示出如何使用mysql客户安装新用户。这些例子假定权限根据以前的章节描述的缺省被安装。这意味着为了改变,你必须在mysqld正 在运行同一台机器上,你必须作为MySQL root用户连接,并且root用户必须对mysql数据库有insert权限和reload管理权限。另外,如果你改变了root用户口令,你必须如下 的mysql命令指定它。
你可以通过发出GRANT语句增加新用户:
shell》 mysql –user=root mysql
mysql》 GRANT ALL PRIVILEGES ON *.* TO monty@localhost
IDENTIFIED BY ‘something’ WITH GRANT OPTION;
mysql》 GRANT ALL PRIVILEGES ON *.* TO monty@“%”
IDENTIFIED BY ‘something’ WITH GRANT OPTION;
mysql》 GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql》 GRANT USAGE ON *.* TO dummy@localhost;
这些GRANT语句安装3个新用户:
monty
可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令(‘something’做这个。注意,我们必须对 monty@localhost和monty@“%”发出GRANT语句。如果我们增加localhost条目,对localhost的匿名用户条目在我 们从本地主机连接接时由mysql_install_db创建的条目将优先考虑,因为它有更特定的Host字段值,所以以user表排列顺序看更早到来。
admin
可以从localhost没有一个口令进行连接并且被授予reload和process管理权限的用户。这允许用户执行mysqladmin reload、mysqladmin refresh和mysqladmin flush-*命令,还有mysqladmin [...]

  • Hotmail
  • LinkedIn
  • Yahoo Mail
  • Yahoo Messenger
  • Google Bookmarks
  • Share/Bookmark

PHP生成静态页面详解

一,PHP脚本与动态页面。
PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文件混合,也可以类,函数封装等形式,以 模板的方式对用户请求进行处理。无论以何种方式,它的基本原理是这样的。由客户端提出请求,请求某一页面 —–> WEB服务器引入指定相应 脚本进行处理 —–> 脚本被载入服务器 —–> 由服务器指定的PHP解析器对脚本进行解析形成HTML语言形式  —-> 将解析后的HTML语句以包的方式传回给浏览器。由此不难看出,在页面发送到浏览器后,PHP就不存在了,已被转化解析为HTML语 句。客户请求为一动态文件,事实上并没有真正的文件存在在那里,是PHP解析而成相对应的页面,然后发送回浏览器。这种页面处理方式被称为“动态页面”。
二,静态页面。
静态页面是指在服务器端确实存在的仅含HTML以及JS,CSS等客户端运行脚本的页面。它的处理方式是。由客户端提出请求,请求某一页面  —-> WEB服务器确认并载入某一页面 —-> WEB服务器将该页面以包的形式传递回浏览器。由这一过程,我们对比一下动态页 面,即可方现。动态页面需由WEB服务器的PHP解析器进行解析,而且通常还需连接数据库,进行数据库存取操作,然后才能形成HTML语言信息包;而静态 页面,无须解析,无须连接数据库,直接发送,可大大减轻服务器压力,提高服务器负载能力,大幅提供页面打开速度和网站整体打开速度。但其缺点是,不能动态 地对请求进行处理,服务器上必须确实存在该文件。
三,模板及模板解析。
模板即尚未填充内容html文件。例如:
temp.html

Code:

<HTML>
<TITLE>{ title }</TITLE>
<BODY>
this is a { file } file’s templets
</BODY>
</HTML>

PHP处理:
templetest.php

Code:

<?php
$title = “拓迈国际测试模板”;
$file   = “TwoMax Inter test templet,<br>author:Matrix@Two_Max”;
$fp          = fopen (”temp.html”,”r”);
$content  = fread ($fp,filesize (”temp.html”));
$content .= str_replace (”{ file }”,$file,$content);
$content .= str_replace (”{ title }”,$title,$content);
echo $content;
?>

模板解析处理,即将经PHP脚本解析处理后得出的结果填充(content)进模板的处理过程。通常借助于模板类。目前较 流行的模板解析类有phplib,smarty,fastsmarty等等。模板解析处理的原理通常为替换。也有些程序员习惯将判断,循环等处理放进模板 文件中,用解析类处理,典型应用为block概念,简单来说即为一个循环处理。由PHP脚本指定循环次数,如何循环代入等,再由模板解析类具体实施这些操 作。    好了,对比过静态页面与动态页面各自的优劣,现在我们就来说说,如何用PHP生成静态文件。
PHP生成静态页面 并不是指PHP的动态解析,输出HTML页面,而是指用PHP创建HTML页面。同时因为HTML的不可写性,我们创建的HTML若有修改,则需删掉重新 生成即可。(当然你也可以选择用正则进行修改,但个人认为那样做倒不如删掉重新生成来得快捷,有些得不偿失。)
言归正传。用过PHP 文件操作函数的PHP FANS知道,PHP中有一个文件操作函数fopen,即打开文件。若文件不存在,则尝试创建。这即是PHP可以用来创建HTML文件的理论基础。只要用 来存放HTML文件的文件夹有写权限(即权限定义0777),即可创建文件。(针对UNIX系统而言,Win系统无须考虑。)仍以上例为例,若我们修改最 后一句,并指定在test目录下生成一个名为test.html的静态文件:HP0-538 [...]

  • Hotmail
  • LinkedIn
  • Yahoo Mail
  • Yahoo Messenger
  • Google Bookmarks
  • Share/Bookmark

MySQL中查询已知记录的上一条和下一条记录

MySQL中查询已知记录的上一条和下一条记录,记得我刚刚学习PHP的时候写了一个“上一页”与“下一页”的方法,效率低而且又费事儿。
其实可以用一条SQL语句就搞定了,见证了SQL的强大了呀。。。。
设MySQL中有一个形如下表的数据表,表名为test:
+——+——+—————+
| ID   | No   | Other         |
+——+——+—————+
|    1 |    1 | Some others 1 |
|    2 |    2 | Some others 2 |
|    3 |    3 | Some others 3 |
|   10 |    4 | Some others 4 |
|   15 |    5 [...]

  • Hotmail
  • LinkedIn
  • Yahoo Mail
  • Yahoo Messenger
  • Google Bookmarks
  • Share/Bookmark

让apache支持shtml

什么是SSI?
SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针。SSI具有 强大的功能,只要使用一条简单的SSI命令就可以实现整个网站的内容更新,时间和日期的动态显示,以及执行shell和CGI脚本程序等复杂的功能。
如何使你的Apache服务器支持SSI?
Apache默认是不支持SSI的,需要我们更改httpd.conf来进行配置。我这里以windows平台的Apache 2.0.x为例,打开conf目录下的httpd.conf文件,搜索“AddType text/html .shtml”,搜索结果:
# AddType text/html .shtml
# AddOutputFilter INCLUDES .shtml
把这两行前面的#去掉。
然后搜索“Options Indexes FollowSymLinks”
在搜索到的那一行后面添加“ Includes”
即将该行改变为 Options Indexes FollowSymLinks Includes
保存httpd.conf,重起apache即可。
到此我们就完成了对Apache SSI的设置。

  • Hotmail
  • LinkedIn
  • Yahoo Mail
  • Yahoo Messenger
  • Google Bookmarks
  • Share/Bookmark

常用与正则表达式

“^\d+$”  //非负整数(正整数 + 0)
“^[0-9]*[1-9][0-9]*$”  //正整数
“^((-\d+)|(0+))$”  //非正整数(负整数 + 0)
“^-[0-9]*[1-9][0-9]*$”  //负整数
“^-?\d+$”    //整数
“^\d+(\.\d+)?$”  //非负浮点数(正浮点数 + 0)
“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$”   //正浮点数
“^((-\d+(\.\d+)?)|(0+(\.0+)?))$”  //非正浮点数(负浮点数 + 0)
“^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$”   //负浮点数
“^(-?\d+)(\.\d+)?$”  //浮点数
“^[A-Za-z]+$”  //由26个英文字母组成的字符串
“^[A-Z]+$”  //由26个英文字母的大写组成的字符串
“^[a-z]+$”  //由26个英文字母的小写组成的字符串
“^[A-Za-z0-9]+$”  //由数字和26个英文字母组成的字符串
“^\w+$”  //由数字、26个英文字母或者下划线组成的字符串
“^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$”    //email地址
“^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$”  //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   //  年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年
“^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$”   //Emil
/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/     //电话号码
“^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$”   //IP地址
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$
元字符及其在正则表达式上下文中的行为:
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ [...]

  • Hotmail
  • LinkedIn
  • Yahoo Mail
  • Yahoo Messenger
  • Google Bookmarks
  • Share/Bookmark

注册表方式删除.SVN文件

如何删除.SVN文件,大部分人都会有这个需求,不过你用PHP,JAVA或者任务的程序都可以实现。不过这里提供了一种注册表的方式,很方便哦。
建立一个文本文件,取名为Delete .SVN Folders.reg,内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@=”Delete SVN Folders”
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@=”cmd.exe /c \”TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \”%1\” %%f IN (.svn) DO RD /s /q \”%%f\” \””
然后点击会写入注册表,接下来就好办了。再选择文件夹点右键看一看。
英文原文地址:http://weblogs.asp.net/jgalloway/archive/2007/02/24/shell-command-remove-svn-folders.aspx

  • Hotmail
  • LinkedIn
  • Yahoo Mail
  • Yahoo Messenger
  • Google Bookmarks
  • Share/Bookmark

svn 出现 svnserve.conf:12: Option expected 错误原因及解决办法

本人在网上找了一个很不错的配置SVN服务器的教程,按步骤一步步的配置。配置完之后,在本地CheckOut测试服务器出现如下问题:
/opt/svn/svntest/conf/svnserve.conf:12: Option expected
在网上搜索了一下,原来
是因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件
例如:
anon-access = read —-正确
anon-access = read     —-错误
要顶着行开头写。。。。解决记录一下。
SVN命令:
启服务器及测试:
1,启SVN服务,并指定SVN的根目录:
[root@youxia201 test]# svnserve -d -r /opt/svn/

2,服务已经正常起来:
[root@youxia201 test]# netstat -tunlp | grep svn
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      8646/svnserve

  • Hotmail
  • LinkedIn
  • Yahoo Mail
  • Yahoo Messenger
  • Google Bookmarks
  • Share/Bookmark

CentOS 5.2下SVN服务器的安装与配置

安装了一下SVN服务器,本文没有与Apache整合,过程如下:
一,下载相关软件:
[root@youxia201 test]# wget http://subversion.tigris.org/downloads/subversion-1.6.1.tar.gz
[root@youxia201 test]# wget http://subversion.tigris.org/downloads/subversion-deps-1.6.1.tar.gz

二,安装及配置:
1,解压,要在同一个目录下:
[root@youxia201 opt]# tar -zxvf subversion-1.6.1.tar.gz
[root@youxia201 opt]# tar -zxvf subversion-deps-1.6.1.tar.gz

2,编译及安装:
[root@youxia201 subversion-1.6.1]# ./configure –prefix=/usr/local/svn/
[root@youxia201 subversion-1.6.1]# make && make install

3,把svn相关的命令添加到环境变量中:
[root@youxia201 subversion-1.6.1]# echo “export PATH=$PATH:/usr/local/svn/bin/” >> /etc/profile
[root@youxia201 subversion-1.6.1]# source /etc/profile

[root@youxia201 subversion-1.6.1]# svn
svn svnadmin svndumpfilter svnlook svnserve svnsync svnversion

三,建立测试仓库:
1,建立SVN的根目录,研发中心有多个项目部:
[root@youxia201 subversion-1.6.1]# mkdir -p /opt/svn/

2,建立一个测试仓库:
[root@youxia201 subversion-1.6.1]# mkdir -p /opt/svn/svntest/

[root@youxia201 subversion-1.6.1]# svnadmin create /opt/svn/svntest/

3,修改配置文件:
[root@youxia201 svntest]# cd [...]

  • Hotmail
  • LinkedIn
  • Yahoo Mail
  • Yahoo Messenger
  • Google Bookmarks
  • Share/Bookmark
.... ... ...