分类 代码人生 下的文章

引用PHP手册里的一评论

This will greatly reduce your page load time as the browser will only need to send one server request for the entire page, rather than multiple requests for the HTML and the images. Requests need to be uploaded and 99% of the world are limited on their upload speed to the server.

翻译一下就是

这种方式能够大大减少页面载入时间,因为整个页面只需要一个请求,多个针对html文档和图片的请求。请求需要被提(上)交(传),但是99%的上传速度是被限制的。

所以减少请求也是一个明确的选择!

阅读剩余部分

双引号,单引号问题自古以来一直处在混沌状态,不懂的人觉得没啥区别,懂的人貌似也说不出来啥区别,其实区别还是有很多,转给大家看看,自己也留一份参考

转自http://blog.sina.com.cn/s/blog_706476980100xapp.html

1.单引号和双引号都可以作为字符串的开始符和关闭符,并且只能‍同一种单或者双引号来定义开始和结束;单引号之间的字符都被认为是字符,即使是转义符\和变量符$,例外的是\’标识单引号。 2.双引号之间的字符是需要php解析的,包括$,\,{都保留了php赋予的特殊含义。 3." "双引号里面的字段会经过编译器解释,然后再当作HTML代码输出;而' '单引号里面的不进行解释,直接输出。 例如:

$abc='my name is tome';
echo $abc //结果是:my name is tom
echo '$abc' //结果是:$abc
echo "$abc" //结果是:my name is tom

特别在使用MYSQL语句的时候,双引号和单引号的用法让新手不知所措,在这里,举个例子,来进行说明。 假设查询条件中使用的是常量,例如:

select    *    from    abc_table where user_name='abc';

SQL语句可以写成:

SQLstr = "select    *    from abc_table where user _name= 'abc'" ;

假设查询条件中使用的是变量,例如:

$user_name = $_REQUEST['user_name']; //字符串变量

$user=array ("name"=> $_REQUEST['user_name‘,"age"=>$_REQUEST['age'];//数组变量

SQL语句就可以写成:

SQLstr = "select    *    from abc_table where user_name = ' " . $user_name . " ' ";
SQLstr = "select * from abc_table where user_name = ' " . $user["name"] . " ' ";

对比一下:

SQLstr="select * from abc_table where user_name = ' abc ' " ;
SQLstr="select * from abc_table where user_name =' " . $user _name . " ' ";
SQLstr="select * from abc_table where user_name =' " . $user["name"] . " ' ";

SQLstr可以分解为以下3个部分:

1:"select * from table where user_name = ' " //固定SQL语句 
2:$user //变量 
3:" ' "
1,2,3部分字符串之间用"." 来连接

阅读剩余部分

正则表达式入门

概念

字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等等。字符串是0个或更多个字符的序列。文本也就是文字,字符串。 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。


支持

在最近的六十年中,正则表达式逐渐从模糊而深奥的数学概念,发展成为在计算机各类工具和软件包应用中的主要功能。不仅仅众多UNIX工具支持正则表达式,近二十年来,在WINDOWS的阵营下,正则表达式的思想和应用在大部分 Windows 开发者工具包中得到支持和嵌入应用!从正则式在Microsoft Visual Basic 6 或 Microsoft VBScript到.NET Framework中的探索和发展,WINDOWS系列产品对正则表达式的支持发展到无与伦比的高度,几乎所有 Microsoft 开发者和所有.NET语言都可以使用正则表达式。如果你是一位接触计算机语言的工作者,那么你会在主流操作系统(*nix[Linux, Unix等]、Windows、HP、BeOS等)、主流的开发语言(PHP、C#、Java、C++、VB、Javascript、Ruby以及python等)、数以亿万计的各种应用软件中,都可以看到正则表达式优美的舞姿。

以上内容引自百度百科


阅读剩余部分

有些软件虽然卖的很贵,但是稳定性还是让人很无语,经常莫名其妙的崩溃,生产服务器怎么能允许这种事情发生!

一个监控程序运行的就这样诞生了,程序Python 2.7

思路很简单,先写一个监控的函数,判断是否在运行,然后循环调用N次,直到运行成功,实在不行,就发个通知或者记录下来

难点在于如何判断进程在运行。

思路也很简单,主要用到了这两个方法

  • os.popen
  • os.system

他们两个都可以直接运行cmd或者shell中的命令,但是前者会返回输出的内容,可以做进一步的处理

而后者只是执行,并把结果打印出来。

下面是程序,注释已经很清晰了


#coding=utf-8
"""
To check program if it is running
@author PHPergao
@time 2014-7-22
"""

import re
import os
import time
import urllib2
import urllib

flag = 1

#check function
def checkhct():
    #tasklist也可换成linux下打印所有进程的命令 ps aux
	for line in os.popen('tasklist').readlines():
            #判断用正则更准确,也可以使用find或者index判断
		pattern = re.compile(r'qq.*', re.I)
		match = pattern.match(line)
		if(match):
			return True
	return False


#repeat 3 times
for x in xrange(0,3):
	if(checkhct() == False):
		print 'error'
            #程序路径
		os.system('D:\t\qq.exe')
	else:
		print 'running'
		flag = 0
		break

#if is't running

if(flag==1):
    #send email...
    ...
    ...

一直在用everedit做开发,今天开始高大上,用一下netbeans

安装

  • netbeans下载页面找到PHP版的netbeans,下载下来并安装,表忘了JRE也要装的

  • xdebug下载页面下载对应PHP版本的xdebug,然后解压至php目录下的ext目录下,同时新建d:\xdebug文件夹

配置

PHP.INI

在phpinfo()页面中找到INI文件,在文件最后加入以下代码

;注意:我们的版本号可能不同
zend_extension="ext\php_xdebug-2.2.5-5.4-vc9.dll" 
[Xdebug]
;是否开启自动跟踪
xdebug.auto_trace= On
;是否开启异常跟踪
xdebug.show_exception_trace= On
;是否开启远程调试自动启动
xdebug.remote_autostart= On
;是否开启远程调试
xdebug.remote_enable= On
;允许调试的客户端IP
;xdebug.remote_host= 192.168.1.1
;远程调试的端口(默认9000)
xdebug.remote_port=9000
;调试插件dbgp
xdebug.remote_handler=dbgp
;是否收集变量
xdebug.collect_vars= On
;是否收集返回值
xdebug.collect_return= On
;是否收集参数
xdebug.collect_params= On
;跟踪输出路径
xdebug.trace_output_dir="d:\xdebug"
;是否开启调试内容
xdebug.profiler_enable=On
;调试输出路径
xdebug.profiler_output_dir="d:\xdebug"
;调试的域名
xdebug.remote_host=localhost

修改以后重启服务器,看看有没有出现xdebug,如果出现了,那就成功了一大半

netbeans

设置的地方在tool->option里找到debug标签,在这里可以修改PHP.EXE的路径,还有调试的工具和端口号等。

注意

  • 如果你用的远程调试,务必打开xdebug.remote_enable
  • 如果你用的域名调试,那么请修改xdebug.remote_host为你的域名,不要忘了加引号,不用带http://
  • 如果总是显示等待xdebug,那么就换一个web浏览器试试,在tool->option->general里可以找到
  • 如果还不行,请留言,老高和你一起搞!

调试

哈哈,这还用讲吗?上个图

netbeans开启xdebug

BBCODE,即BB代码,属于轻量级标记语言(Lightweight Markup Language)的一种,如字面上所显示的,它主要是使用在BBS、论坛、Blog等网络应用上。BBCode最初由Ultimate Bulletin Board讨论区系统发展出来,因此常见UBB代码的称呼。BBCode的语法通常为[标记]这种形式,即语法左右用两个中括号包围,以作为与正常文字间的区别。系统解译时遇上中括号便知道该处是BBcode,会在解译结果输出到客户端时转换成最为通用的HTML语法。

要过滤他有两个思路,一个是先转化为html,再用strip_tags即可,下面是具体函数

 $match) {
			list($tag, $param, $innertext) = array(
				$matches[1][$key],
				$matches[2][$key],
				$matches[3][$key]
			);
			switch ($tag) {
				case 'b':
					$replacement = "$innertext";
					break;
				case 'i':
					$replacement = "$innertext";
					break;
				case 'size':
					$replacement = "$innertext";
					break;
				case 'color':
					$replacement = "$innertext";
					break;
				case 'center':
					$replacement = "
$innertext
"; break; case 'quote': $replacement = "
$innertext
" . $param ? "$param" : ''; break; case 'url': $replacement = '$innertext"; break; case 'img': @list($width, $height) = preg_split('`[Xx]`', $param); $replacement = "'; break; } $string = str_replace($match, $replacement, $string); } } return $string; } $text = <<

第二种办法更简单,直接用正则把[]内的内容删除即可

$cont_str = trim( preg_replace("/\[.*\]/", '', $cont_str) );

推荐第二种方法