字符串转换类函数
addcslashes函数:以C语言风格使用反斜线转义字符串中的字符
addslashes函数:使用反斜线引用字符串
chop函数:清除字符串中的连续空格
get_html_translation_table函数:返回htmlspecialchars()函数和htmlentities()函数的转换表
chunk_split函数:将字符串分割成小块
字符串转换类函数
addcslashes函数:以C语言风格使用反斜线转义字符串中的字符
addslashes函数:使用反斜线引用字符串
chop函数:清除字符串中的连续空格
get_html_translation_table函数:返回htmlspecialchars()函数和htmlentities()函数的转换表
chunk_split函数:将字符串分割成小块
【案例一】
作者:老王
如果PHP对象存在递归引用,就会出现内存泄漏。这个Bug在PHP里已经存在很久很久了,先让我们来重现这个Bug,代码如下:
三个常用的知识点:
1.惰性匹配:正则引擎默认是贪婪的,若要最少重复的话,需要用到惰性匹配符 “?”
懒惰限定符
代码/语法 |
说明 |
*? | 重复任意次,但尽可能少重复 |
+? | 重复1次或更多次,但尽可能少重复 |
?? | 重复0次或1次,但尽可能少重复 |
{n,m}? | 重复n到m次,但尽可能少重复 |
{n,}? | 重复n次以上,但尽可能少重复 |
首先想到的是用getimagesize()看看type,发现都是gif。
然后想gif动画是gif89格式的,发现文件开头是gif89,但是很多透明图片也是用的gif89格式。
看来必须分析文件的祯了。baidu了一下,发现phpx.com有解决过了。
我们前面说过在类里面声明“__”开始的方法名的方法(PHP给我们提供的),都是在某一时刻不同情况下自动调用执行的方 法,“__toString()”方法也是一样自动被调用的,是在直接输出对象引用时自动调用的, 前面我们讲过对象引用是一个指针,比如 说:“$p=new Person()“中,$p就是一个引用,我们不能使用echo 直接输出$p,这样会输 出“Catchable fatal error: Object of class Person could not be converted to string”这样的错误,如果你在类里面定义了“__toString()”方法,在直接输出对象引用的时候,就不会产生错误,而是自动调用 了”__toString()”方法, 输出“__toString()”方法中返回的字符,所以“__toString()”方法一定要有个返回值(return 语句)。
/** * PHP计算两个时间段是否有交集(边界重叠不算) * * @param string $beginTime1 开始时间1 * @param string $endTime1 结束时间1 * @param string $beginTime2 开始时间2 * @param string $endTime2 结束时间2 * @return bool * @author blog.snsgou.com */ function is_time_cross($beginTime1 = '', $endTime1 = '', $beginTime2 = '', $endTime2 = '') { $status = $beginTime2 - $beginTime1; if ($status > 0) { $status2 = $beginTime2 - $endTime1; if ($status2 >= 0) { return false; } else { return true; } } else { $status2 = $endTime2 - $beginTime1; if ($status2 > 0) { return true; } else { return false; } } }
object 转 array
/** * object 转 array */ function object_to_array($obj){ $_arr = is_object($obj)? get_object_vars($obj) : $obj; foreach ($_arr as $key => $val) { $val = (is_array($val)) || is_object($val) ? object_to_array($val) : $val; $arr[$key] = $val; } return $arr; }
两者不同
set_magic_quotes_runtime() 可以让程序员在代码中动态开启或关闭 magic_quotes_runtime,
set_magic_quotes_runtime(1) 表示开启,set_magic_quotes_runtime(0) 则表示关闭。当set_magic_quotes_runtime(1) 时,从数据库或通过fread之类的函数读取的文本,将自动对’ “和自动加上反斜杠进行转义,防止溢出。这在对数据库的数据进行转移的时候非常有用。
但在一般情况下,应当将其关闭,否则从数据库读取出来的数据单引号、双引号和反斜杠都会被加上,导致显示不正常。像Discuz,PHPWind都在公共文件的头部加上一句 set_magic_quotes_runtime(0); 强制关闭 magic_quotes_runtime 。
有的时候我们需要在一个项目里面,使用两个或多个一样的对象,如果你使用“new”关键字重新创建对象的话,再赋值上相同的属性,这样做比较烦琐而且也容易出错,所以要根据一个对象完全克隆出一个一模一样的对象,是非常有必要的,而且克隆以后,两个对象互不干扰。
在PHP4中我们使用“clone”这个关键字克隆对象;