分类 代码人生 下的文章

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

转自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) );

推荐第二种方法