PHP多级目录创建函数、Smarty模板特点及安全模式影响函数详解
1.编写一个可以创建多级目录的PHP函数

/*** 创建多级目录* @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. php.ini中开启safe_mode会影响哪些功能?至少说出 6 个。
safe_mode,PHP安全模式,在存在多个用户帐户的PHP开发Web服务器上提供基本的安全共享环境。
开启安全模式后,部分函数会被完全禁止,而其他函数的功能则会受到限制,如:chdir、move_uploaded_file、chgrp、parse_ini_file、chown、rmdir、copy、rename、fopen、require、mkdir、unlink ETC。
请注意,在 php5.3 及更高版本中,safe_mode 已被弃用,而在 php5.4 及更高版本中,此功能已被完全删除。
4. 您会使用什么功能将远程图像捕获到本地?
file_get_contents 或者 curl
5.PHP的垃圾回收机制是什么?
PHP 可以自动管理内存并清除不再需要的对象。 PHP 使用引用计数,这是一种简单的垃圾收集机制。每个对象都包含一个引用计数器,连接到该对象的每个引用都会使计数器加一。当引用离开生存空间或设置为NULL时,计数器减1。当对象的引用计数器达到零时,PHP知道您不再需要使用该对象并释放它占用的内存空间。
6、请写一段PHP代码,保证多个进程可以同时成功写入同一个文件。
核心思想:锁
$fp = fopen("lock.txt","w+");if (flock($fp,LOCK_EX)) {//获得写锁,写数据fwrite($fp, "write something");// 解除锁定flock($fp, LOCK_UN);} else {echo "file is locking...";}fclose($fp);
7. 编写一个函数以尽可能高效地从标准 URL 检索文件扩展名,例如:您需要检索 php 或 .php
// 方案一function getExt1($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 getExt2($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);}}$path = "http://www.sina.com.cn/abc/de/fg.php?id=1";echo getExt1($path);echo "
";echo getExt2($path);
相关主题: 使用五种以上方法获取文件扩展名。要求:dir/upload.image.jpg。要查找.jpg或jpg,必须使用PHP自带的处理函数进行处理。该方法不能明显重复,可以封装。到一个函数中,例如 get_ext1 (file_name)
8、编写一个函数,可以遍历文件夹中的所有文件和子文件夹。
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;}}}
9、简述论坛无限分类的实现原理。
创建类别表如下:
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;}
10、编写一个函数计算两个文件的相对路径,如b='/a/b/12/34/c.php'; a 的计算相对路径应该是 ../../c/d
function releative_path($path1,$path2){$arr1 = explode("/",dirname($path1));$arr2 = explode("/",dirname($path2));for ($i=0,$len = count($arr2); $i < $len; $i++) {if ($arr1[$i]!=$arr2[$i]) {break;}}// 不在同一个根目录下if ($i==1) {$return_path = array();}// 在同一个根目录下if ($i != 1 && $i < $len) {$return_path = array_fill(0, $len - $i,"..");}// 在同一个目录下if ($i == $len) {$return_path = array('./');}$return_path = array_merge($return_path,array_slice($arr1,$i));return implode('/',$return_path);}$a = '/a/b/c/d/e.php';$b = '/a/b/12/34/c.php';$c = '/e/b/c/d/f.php';$d = '/a/b/c/d/g.php';echo releative_path($a,$b);//结果是../../c/decho "
";echo releative_path($a,$c);//结果是a/b/c/decho "
";echo releative_path($a,$d);//结果是./echo "
";
11.mysql_fetch_row()和mysql_fetch_array()有什么区别?
mysql_fetch_row() 将数据库列存储在从零开始的数组中,第一列位于数组的索引 0 处,第二列位于数组的索引 1 处,依此类推。
mysql_fetch_assoc() 将数据库的列存储在关联数组中。数组的索引是字段名称。例如,我的数据库查询返回三个字段“first_name”、“last_name”和“email”。数组的索引是“first_name”、“last_name”和“email”。
mysql_fetch_array()可以同时发回mysql_fetch_row()和mysql_fetch_assoc()的值。
12.有一个网页地址,如PHP开发资源网主页:,如何获取其内容?
方法一(适用于PHP5及以上版本):
$readcontents=fopen("http://www.phpres.com/index.html","rb");$contents=stream_get_contents($readcontents);fclose($readcontents);echo $contents;
方法二:
echo file_get_contents("http://www.phpres.com/index.html");
13.谈谈你对mvc的理解
由模型、视图和控制器完成的应用程序。模型层负责提供数据,与数据库相关的操作都由模型层处理。
视图层提供交互界面并输出数据。
控制器层负责接收请求,分发给相应的模型进行处理,然后调用视图层进行显示。
14.GD库是做什么的?
GD库提供了一系列用于处理图像的API。您可以使用GD库来处理图像或生成图像。在网站上,GD库通常用于生成缩略图或为图像添加水印或生成网站数据报告。从 PHP 4.3.0 版本开始,GD 就被内置到 PHP 系统中。
15.可以使用什么函数打开文件进行读写?
A.fget();
B.file_open();
C.fopen();
D.open_file();
答案:C
fget() 这不是 PHP 函数,会导致执行错误。
file_open () 这不是 PHP 函数,会导致执行错误。
fopen() 这是正确答案。 fopen() 可用于打开文件进行读写。
open_file() 这不是 PHP 函数,会导致执行错误。
16.Smarty原理
Smarty 是一个模板引擎。使用smarty的主要目的是分离逻辑和外部内容。如果不使用模板,通常的做法是混合 PHP 代码和 HTML 代码。使用模板后,可以将业务逻辑放在php文件中,而负责显示内容的模板则放在html文件中。
Smarty执行display方法时,会读取模板文件,进行数据替换,生成编译后的文件。后续每次访问都会直接访问编译后的文件。读取编译后的文件,节省了读取模板文件和字符串替换的时间。 ,因此可以更快。编译文件中的时间戳记录了模板文件的修改时间。如果模板被修改了,可以检测到然后重新编译(编译保存的是静态内容,动态内容根据传入的参数而变化)。
如果启用缓存,则会根据编译后的文件生成缓存文件。如果存在缓存文件,且访问时该缓存文件未过期,则直接访问该缓存文件。
相关主题1:HTML和PHP可以分开使用的模板
smarty、phplib 等
相关问题2:您用过模板引擎吗?如果有,您使用的模板引擎的名称是什么?
聪明人
17.如何在PHP中实现页面跳转
方法一:PHP函数跳转,缺点是头部之前不能有输出。跳转后的程序继续执行,可以使用exit来中断后续程序的执行。
header("Location:网址");//直接跳转header("refresh:3;url=http://axgle.za.NET");//三秒后跳转
方法二:使用元数据
echo"<meta http-equiv=refresh content='0;url=网址'>";
18.PHP可以连接sql server/oracle等数据库吗?
能
19. 使用哪些工具进行版本控制?
SVN 或 CVS、Git
相关问题:您用过版本控制软件吗?如果有,您使用的版本控制软件的名称是什么?
乌龟SVN-1.2.6
20、编写正则表达式过滤网页上所有JS/VBS脚本(即去掉script标签及其内容):
过滤 JavaScript 脚本参考:
header("content-type:text/html;charset=utf-8");$script = "以下内容不显示:";$pattern = '//si';echo preg_replace($pattern, "脚本内容", $script);//以下内容不显示:脚本内容
21.给定一行文本 $string,您将如何编写正则表达式来去除其中的所有 HTML 标记?
方案1、使用PHP内置函数strip_tags()去除HTML标签。方案2,自定义功能如下:
header("content-type:text/html;charset=utf-8");function strip_html_tags($str){$pattern = '/<("[^"]*"|'[^']*'|[^>"'])*>/';return preg_replace($pattern,'',$str);}// 实例$html = '">ddddd
';echo strip_html_tags($html);echo "
";$html = '">bb
';
aaaecho strip_html_tags($html);?>
22. 请编写一个函数来验证电子邮件的格式是否正确(需要正则表达式)
preg_match('/^[w-.]+@[w-]+(.w+)+$/',$email);
相关问题:请使用正则表达式编写一个函数来验证电子邮件的格式是否正确。
23.请类比解释POSIX风格和Perl兼容风格的正则表达式的主要功能。
主要有以下三个区别:
preg_replace()中的正则表达式可以写成:“/.xxx/”,ereg_replace()中的正则表达式需要写成“xxx”
preg_replace()可以操作数组,但ereg_replace()不能
在反向引用中,preg_replace()可以使用0-99,而ereg_replace()最大为9
preg_match() 函数使用 Perl 兼容的正则表达式语法,通常是 ereg() 的更快替代方法。
24、请写出并解释如何在命令行下运行PHP脚本(写出两种方式)并同时向PHP脚本传递参数?
首先进入php安装目录
php -f d:/wamp/www/1.php 其中-f参数指定要执行的php文件php -r phpinfo(); 其中-r表示直接执行php代码,无需写开始结束标记
25、使用正则表达式提取标记语言(html或xml)代码段中指定标签的指定属性值(需要考虑属性值不规则,如不区分大小写、中间有空格)属性名称值和等号)等等)。这里假设需要提取test标签的attr属性值。请自行构造一个包含该标签的字符串。
编写以下函数:
header("content-type:text/html;charset=utf-8");function getAttrValue($str,$tagName,$attrName){$pattern1="/<".$tagName."(s+w+s*=s*(['"]?)([^'"]*)())*s+".$attrName."s*=s*(['"]?)([^'"]*)()(s+w+s*=s*(['"]?)([^'"]*)(9))*s*>/i";$arr=array();$re=preg_match($pattern1,$str,$arr);if($re){echo"
$arr[6]={$arr[6]}";}else{echo"
没找到。";}}// 示例$str1="" ;getAttrValue($str1,"test","attr");//找test标签中attr属性的值,结果为ddd$str2=""t2='t2 value'>" ;getAttrValue($str2,"test2","t1");//找test2标签中t1属性的值,结果为t1 value
26.下面的代码有什么作用?解释一下那里发生了什么。日期);
这是将日期从 MM/DD/YYYY 格式转换为 DD/MM/YYYY 格式。产出 2003 年 8 月 26 日
27.您将使用什么功能将浏览器重定向到新页面?
A.redir()
B.header()
C.位置()
D.重定向()
答案:B
redir() 这不是 PHP 函数,会导致执行错误。
header() 这是正确答案。 header()函数发送标头信息,可用于将浏览器重定向到另一个页面,例如:header(“Location:”)。
location() 这不是 PHP 函数,会导致执行错误。
redirect() 这不是 PHP 函数,会导致执行错误。
28.打开后____________将使用来自HTML 表单和cookie 的不同变量____________您的脚本。
A.show_errors,启用
B.show_errors,显示
C.register_globals,增强
D.register_globals,注入
答案:C
29. 函数参数不能是变量的引用,除非在 php.ini 中将 ____ 设置为 on。
allowed_call_time_pass_reference 是否启用调用函数时强制参数通过引用传递
30、HTML语言中,可以通过页面头部的meta标签来输出文件的编码格式。以下是标准的元语句。请使用PHP语言编写一个函数,将类似的元标记转换为标准的HTML页面。 charset部分的值改为big5。
请注意:
(1)需要处理完整的html页面,即不仅仅是这个meta语句
(2) 忽略大小写
(3)' 和 " 在这里可以互换
(4)'Content-Type'两边的引号可以忽略,但'text/html;charset=gbk'两边的引号不能忽略。
(5)注意多余空格的处理
编写正则表达式如下:
$reg1="/(]?)Content-Type()s*contents*=s*(['"])text/html;charset=)(UTF-8)()(s*/?>)/i"; 猜你喜欢
-
如何有效学习PHP语言?个人学习经验分享与实用技巧
PHP入门学习方法 每个人的学习方式各具特点。写这篇文章的意图是将自己的学习历程进行分享。此分享仅供参考,不可盲目照搬他人的学习方法。应当找到适合自己的学习方式。那...
-
深入解析PHP Session的高级应用与优化技巧
这篇文章主要介绍了相关资料,是关于 php session 的应用的详细介绍。有需要的朋友可以参考一下。 php session高级应用 在 web 技术中,ses...
-
PHP sprintf函数详解:格式化字符串的简单示例与用法分析
这篇文章主要详细地为大家介绍了 PHP 运用 sprintf 函数的简单事例,它具有一定的参考价值,能够用来作为参考。 本文讲述了 PHP 中 sprintf 函数...
-
PHP日志记录教程:如何将操作事件以JSON格式保存到日志文件中
有时我们需要记录用户或后端操作事件的操作状态。我们可以使用诸如PHP之类的后端语言将操作结果记录到日志文件中,以促进测试和查找问题。特别是那些在后端运行但无法直接看...
-
PHP核心技术解析:创建多级目录函数、Smarty模板特点及safe_mode影响函数
1。PHPCore Technology 1。编写可以创建多级目录(Sina.com技术部)的PHP功能 ˂?php /** * 创建多级目录...

请小编喝杯咖啡吧!