PHP核心技术解析:创建多级目录函数、Smarty模板特点及safe_mode影响函数

1。PHPCore Technology 1。编写可以创建多级目录(Sina.com技术部)的PHP功能

PHP核心技术解析:创建多级目录函数、Smarty模板特点及safe_mode影响函数


    /**
     * 创建多级目录
     * @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。写智能模板的特征(Sina.com技术部)

快速,编译,缓存技术,插头 - 机构,强大的性能逻辑

3。打开php.ini中的safe_mode,它会影响什么功能?至少6。

Safe_mode,PHP安全模式,它在由PHP开发的Web服务器上提供了一个基本的安全共享环境。受到限制,如:chdir,move_uploaded_file,chgrp,parse_ini_file,chown,rmdir,copy,copy,Rename,fopen,requien,requient,mkdir,mkdir,unlink等。

请注意,在PHP5.3或更高版本中,Seaf_Mode被放弃。在PHP5.4或更高版本中,此功能已完全删除。

4.将远程图片抓住到当地,您将使用什么功能? (51.com书面测试问题)

file_get_contents或curl

5。php的垃圾收集机制是什么(腾讯)

PHP可以自动执行内存管理并删除不再需要的对象。

PHP使用简单的垃圾收集机制,例如参考计数。每个对象都包含一个参考计数器,每个参考都连接到对象,并且计数器是加上1。零,PHP知道您将不再需要使用此对象来释放其所需的内存空间。

6。请编写PHP代码,以确保多个进程同时写入同一文件(Tencent)

核心想法:锁


    $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(Sina)


    // 方案一
    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(fileName),getext2(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。编写一个函数来计算两个文件的相对路径,例如a ='/a/b/c/d/e.php'; b ='/a/b/12/34/c.php';计算B相对于A的相对路径应为../../ C/D(Sina)


    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/d
    echo "
"
;    echo releative_path($a,$c);//结果是a/b/c/d    echo "
"
;    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”。 ““ last_name”和“电子邮件”。

mysql_fetch_array()可以返回到mysql_fetch_row()和mysql_fetch_assoc()。

12。有一个网址,例如PHP开发资源网络的首页:如何获取其内容?

方法1(用于PHP5及更高版本):

$readcontents=fopen("http://www.phpres.com/index.html","rb");$contents=stream_get_contents($readcontents);
fclose($readcontents);echo $contents;

方法2:

echo file_get_contents("http://www.phpres.com/index.html");

13.谈论对MVC的理解

通过模型,视图和控制器完成的应用程序。

模型层负责提供数据,并且与数据库相关的操作移交给了模型层进行处理。视图层提供了交互式接口并输出数据。查看要显示的图层。

[!] 14. GD库做什么? (雅虎)

GD库提供了一系列用于处理图片的API。使用GD库处理图片或生成图片。在网站上,GD Curbine通常用于生成TAP图片或在图片中添加水印或在网站数据上生成报告。自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执行显示方法时,读取模板文件并执行数据更换,生成编译文件,然后每次访问时直接访问编译文件。 ,因此可以更快。在编译文件中,时间戳记录了模板文件修改时间。如果修改了模板,则可以检测到它,然后重新计算(编译是为了保存静态内容,取决于传递参数的动态内容)Essence Essence

如果启用了缓存,则将根据编译文件生成缓存文件。访问时,如果存在缓存文件并且缓存文件未过期,则直接访问缓存文件。

相关主题1:HTML和PHP可以使用的模板

聪明,phplib,等。

相关主题2:您是否曾经使用过模板引擎?如果您有使用模板引擎的名称?

聪明

17.如何实现页面跳跃

方法1:PHP功能跳跃,缺点,标题头无法输出,跳跃后的程序继续执行,并且可以通过退出中断程序。

标头(“本地:URL”); //直接跳

标头(“刷新:3; url = http://axgle.za.net”); //三秒钟后跳跃

方法2:使用元

回声“”;

18。PHP可以连接到诸如SQL Server/Oracle之类的数据库吗?

能

19。用于版本控制的哪些工具?

SVN或CVS

相关主题:您是否使用该版本来控制软件?如果您有使用版本控制软件的名称?

Tortoisesvn-1.2.6

20。写一个正则表达式并担心网页上所有JS/VBS脚本(即,删除脚本标记和内容):

过滤器JavaScript脚本参考:


    header("content-type:text/html;charset=utf-8");
    $script = "以下内容不显示:";
    $pattern = '/]*?>.*?/si';    echo preg_replace($pattern, "脚本内容", $script);//以下内容不显示:脚本内容?>

21.赋予一行文本$字符串,您如何编写正则表达式以从中剥离所有HTML标签? (雅虎)

选项1:使用PHP构建-in函数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
aaa

'
;    echo strip_html_tags($html);?>

22。请写一个函数以验证电子邮件的格式是否正确(需要常规)(SINA)

preg_match('/^[\ w \ - \。]+@[\ w \ - ]+(\。\ W+)+$/',$ email);

相关主题:使用正则表达式编写功能以验证电子邮件的格式是否正确。 (Xinzhongren Yun)23。请比较POSIX样式和兼容Perl样式的两个正则表达式。 (腾讯)

主要区别是以下三个:

可以编写preg_replace()中的常规表格,例如:“/。xxx/”,并且需要像“ xxx”一样编写erereg_replace()中的常规性。

preg_replace()可以操作数组,而erereg_replace()不能

0-99可以在反向参考中与preg_replace()一起使用,最大为9

与perl兼容性兼容的Preg_match()函数通常比EREG()更快。

24。请写并解释如何同时在命令行下运行PHP脚本(写两个方法)以同时将参数传递给PHP脚本? (腾讯)

首先输入PHP安装目录

php -fd:/wamp/www/1.php,其中-f参数指定要执行的PHP文件

php -r phpinfo();其中-r指示直接执行php代码,无需写入即可启动末端标记

25。使用正则表达式在代码段(HTML或XML)代码段中提取指定标签的指定属性值(需要对不规则情况的属性值,例如难看的手稿,属性名称值和等效数字在相同的数字和等待之间有空间隔室。假定需要提取测试标签的attribute值,请构建一个包含标签(Tencent)的字符串(Tencent)(Tencent)

写下以下功能:


    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"
\$arr[6]={$arr[6]}"
;        }else{            echo"
没找到。"
;        }    }    // 示例    $str1="";    getAttrValue($str1,"test","attr");//找test标签中attr属性的值,结果为ddd    $str2="";    getAttrValue($str2,"test2","t1");//找test2标签中t1属性的值,结果为t1 value?>

26.步行代码有什么?说明那里发生了什么。date= '08/26/2003'; 9]+)”,2/1/3,日期);(yahoo)

这是将日期从mm/dd/yyyy的格式转换为dd/mm/yyyy格式。

输出2003年8月26日

27.您将使用什么功能将浏览器重定向到新页面? (雅虎)

A.Redir()

B.Header()

C.Location()

d.redirect()

答案:b

redir()这不是PHP函数,它可能导致执行错误。

标题()这是正确的答案。 header()函数发送信息可用于将浏览器转到另一个页面,例如:header(“ local:”)。

位置()这不是PHP函数,它可能导致执行错误。

重定向()这不是PHP函数,它可能导致执行错误。

28.打开______________________yy时:

html形式和饼干。 (腾讯)

A.show_errors,启用

B.Show_errs,表演

C.Register_globals,增强

d.register_globals,注入

答案:c

29。除非____设置为php.ini中的____,否则函数的参数不能是对变量的引用。

laster_call_time_pass_reference

当函数调用通过参考传递时,是否启用强制性参数

30。在HTML语言中,可以使用页面头上的元标记来输出文件的编码格式。以下是标准的元语句。请使用PHP语言编写功能,并使用标准HTML页面。介质的charset部分的价值更改为big5。 (西娜)

请注意:

(1)需要处理完整的HTML页面,也就是说,不仅是此meta语句

(2)面向生命线的写作

(3)'和“”您可以在这里交换

(4)“内容类型”两边的引文都可以忽略,但是“文本/html”; charset = gbk'

(5)注意处理多余的空间

写下正则表达式如下:

$ reg1 =“/()/i”;

你可能想看:
« 上一篇
下一篇 »

相关推荐

php实时推送,php实地培训

2026年10月05日

46阅读

php乱码出现问号的原因,php乱码出现问号的原因有哪些

2026年10月05日

39阅读

php一句话木马,一句话木马ctf

2026年10月05日

41阅读

php获取数组长度,php中如何获取数组的长度

2026年10月05日

43阅读

php面试题库及答案,php程序员面试真题库

2026年10月05日

41阅读

phpcontent-type修改,php源码二次修改需要多少钱

2026年10月05日

38阅读