
1、创建多级目录函数
/**
* 创建多级目录
* @param $path string 要创建的目录
* @param $mode int 创建目录的模式,在windows下可忽略
*/
function create_dir($path,$mode = 0777)
{
if (is_dir($path)) {
# 如果目录已经存在,则不创建
echo "该目录已经存在";
} else {
# 不存在,创建
if (mkdir($path,$mode,true)) {
echo "创建目录成功";
} else {
echo "创建目录失败";
}
}
}2、写出smarty模板的特点
速度快、编译型、缓存技术、插件机制、强大的表现逻辑3、确保多个进程同时写入同一文件成功
核心思路:加锁
function writeToFile($path, $content){
$fp = fopen($path, "w+");
if (flock($fp, LOCK_EX)) {
//获得写锁,写数据
fwrite($fp, $content);
// 解除锁定
flock($fp, LOCK_UN);
} else {
echo "file is locking...";
}
fclose($fp);
}4、尽可能高效的从一个标准url里取出文件的扩展名
eg:http://www.sina.com.cn/abc/de/fg.php?id=1
取出php或.php// 方案一
function getExtension1($url){
$arr = parse_url($url);
//Array ( [scheme] => http [host] => www.sina.com.cn [path] => /abc/de/fg.php [query] => id=1 )
$file = basename($arr['path']);
$ext = explode('.', $file);
return $ext[count($ext)-1];
}
// 方案二
function getExtension2($url){
$url = basename($url);
$pos1 = strpos($url, '.');
$pos2 = strpos($url, '?');
if (strstr($url, '?')) {
return substr($url, $pos1 + 1, $pos2 - $pos1 - 1);
} else {
return substr($url, $pos1);
}
}相关题目:使用五种以上方式获取一个文件的扩展名,要求:dir/upload.image.jpg,找出.jpg或者jpg,必须使用PHP自带的处理函数进行处理,方法不能明显重复,可以封装成函数,比如getExtension1(file_name)
5、遍历一个文件夹下的所有文件和子文件夹
function my_scandir($dir){
$files = array();
if(is_dir($dir)){
if ($handle = opendir($dir)) {
while (($flie = readdir($handle)) !== false) {
if ($flie != "." && $file != "..") {
if (is_dir($dir . "/" . $file)) {
$files[$file] = my_scandir($dir . "/" . $file);
} else {
$files[] = $dir . "/" . $file;
}
}
}
closedir($handle);
return $files;
}
}
}6、无限极分类实现
相关数据表
CREATE TABLE category(
cat_id smallint unsigned not null auto_increment primary key comment'类别ID',
cat_name VARCHAR(30)NOT NULL DEFAULT''COMMENT'类别名称',
parent_id SMALLINT UNSIGNED NOT NULL DEFAULT 0 COMMENT'类别父ID'
)engine=MyISAM charset=utf8;程序实现,递归遍历
function tree($arr, $pid = 0, $level = 0){
static $list = array();
foreach ($arr as $v) {
//如果是顶级分类,则将其存到$list中,并以此节点为根节点,遍历其子节点
if ($v['parent_id'] == $pid) {
$v['level'] = $level;
$list[] = $v;
tree($arr, $v['cat_id'], $level + 1);
}
}
return $list;
}7、正则表达式过滤网页上所有的js/vbs脚本
header("content-type:text/html;charset=utf-8");
$script = "以下内容不显示:<script type='text/javascript'>alert('cc');</script>";
$pattern = '"<script[^>]*?>.*?</script>"si';
echo preg_replace($pattern, "脚本内容", $script);//以下内容不显示:脚本内容8、用正则表达式除去文本内容中所有的HTML标记
方案一,使用PHP内建函数strip_tags()除去HTML标签
方案二:
header("content-type:text/html;charset=utf-8");
function strip_html_tags($str){
$pattern = '/<("[^"]*"|\'[^\']\*\'|[^>"\'])*>/';
return preg_replace($pattern,'',$str);
}
// 实例
$html = '<p id="">ddddd<br /></p>';
echo strip_html_tags($html);
echo "<br />";
$html = '<p id=">">bb<br />aaa<br /></p>';
echo strip_html_tags($html);9、使用正则表达式提取html或xml代码中指定标签的指定属性值(需考虑属性值对不规则的情况,如大小写不敏感,属性名值与等号间有空格等)
假设需提取test标签的attr属性值
eg:<test2 attr='ddd'attr2='ddd2't1=\"t1 value\"t2='t2 value'>header("content-type:text/html;charset=utf-8");
function getAttrValue($str, $tagName, $attrName){
$pattern1 = "/<".$tagName."(\\s+\\w+\s*=\\s*([\\'\\\"]?)([^\\'\\\"]*)(\\2))*\\s+".$attrName."\\s*=\\s*([\\'\\\"]?)([^\\'\\\"]*)(\\5)(\\s+\\w+\\s*=\\s*([\\'\\\"]?)([^\\'\\\"]*)(\\9))*\\s*>/i";
$arr = array();
$re = preg_match($pattern1, $str, $arr);
if($re){
echo"<br/>\$arr[6]={$arr[6]}";
}else{
echo"<br/>not found";
}
}
// 示例
$str1="<test attr = ' ddd'>";
getAttrValue($str1,"test","attr");//找test标签中attr属性的值,结果为ddd
$str2="<test2 attr='ddd' attr2='ddd2' t1=\"t1 value\"t2='t2 value'>";
getAttrValue($str2,"test2","t1");//找test2标签中t1属性的值,结果为t1 value10、如何判断一个字符串是否是合法的日期格式
function checkDateTime($data){
if (date('Y-m-d H:i:s',strtotime($data)) == $data) {
return true;
} else {
return false;
}
}
// 示例
$data = '2015-06-20 13:35:42';
var_dump(checkDateTime($data));//bool(true)
$data = '2015-06-36 13:35:42';
var_dump(checkDateTime($data));//bool(false)11、取出上个月的最后一天
date_default_timezone_set('PRC');
/**
* 获取给定月份的上一月最后一天
* @param $date string 给定日期
* @return string 上一月最后一天
*/
function get_last_month_last_day($date = ''){
if ($date != '') {
$time = strtotime($date);
} else {
$time = time();
}
$day = date('j', $time);//获取该日期是当前月的第几天
return date('Y-m-d', strtotime("-{$day} days", $time));
}
// 测试
echo get_last_month_last_day();
echo "<br />";
echo get_last_month_last_day("2013-3-21");12、将时间变成unix时间戳
date_default_timezone_set("PRC");
// 将字符串转成Unix时间戳
$unix_time = strtotime("2009-9-2 10:30:45");
echo $unix_time;
echo "<br />";
// 格式化Unix时间戳为正常时间格式
echo date("Y-m-d H:i:s",$unix_time);13、把GB2312格式字符串转换成UTF-8格式
iconv('GB2312', 'UTF-8', '时间');参考文章:
评论
暂无评论
评论(1)