php 生成随机数-PHP笔试题——PHP核心技术(中级部分)

2023-08-24 0 1,520 百度已收录

一、PHP核心技术 1、编写一个可以创建多级目录的PHP函数新浪技术部)

<?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、取消链接等

请注意,在 php5.3 以上版本中,safe_mode 已被弃用,而在 php5.4 以上版本中,该功能被完全删除。

4. 使用什么功能将远程图片抓到本地? (51.com面试题)

file_get_contents 或curl

5、PHP的垃圾回收机制是什么(腾讯)

PHP 可以手动管理视频内存并消除不再需要的对象。

PHP 使用简单的垃圾收集(garbage collection)机制,例如引用计数。 每个对象都包含一个引用计数器,每个引用与该对象相连,计数器加1。当引用离开生存空间或者设置为NULL时,计数器减1。当一个对象的引用计数器object 为零,PHP 知道您不再需要使用该对象并释放它占用的视频内存空间。

6、请写一段PHP代码,保证多个进程同时写入同一个文件成功(腾讯)

核心思想:锁

<?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. 编写一个函数php 生成随机数,尽可能高效,从标准url中提取文件扩展名,例如:需要提取php或.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(filename)、getext2(file_name) 8、编写一个函数,遍历一个文件夹下的所有文件和子文件夹。 (新浪)

<?php
    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;

编写函数递归遍历,实现无限分类

<?php
    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(新浪)

<?php
    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”三个数组,链表的索引为“first_name”、“last_name”和“email”。

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;

方法二:

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

13.谈谈MVC的理解

由模型、视图和控制器完成的应用程序。

模型层负责提供数据,与数据库相关的操作都交给模型层处理。 视图层提供交互接口并输出数据php 生成随机数,而控制器层则负责接收请求并分发给相应的模型进行处理,然后调用视图层进行显示。

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

GD库提供了一系列处理图像的API,可以使用GD库来处理图像或生成图像。 在网站上,GD库一般用来生成缩略图或者给图片加盐或者生成网站数据的报告。 从PHP4.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执行显示模式时,会读取模板文件,替换数据,生成编译文件,然后每次访问时都直接访问编译文件,读取编译文件不需要读取模板文件和字符串替换。 时间,所以可以更快。 编译文件中的时间戳记录了模板文件的更改时间。 如果模板改变了,可以测一下,然后重新编译(编译是保存静态内容,动态内容根据传入的参数不同而不同)。

如果启用缓存,则会根据编译后的文件生成缓存文件。 访问时,如果有缓存文件,且缓存文件未过期,则直接访问缓存文件。

相关主题1:HTML和PHP分别使用的模板

smarty、phplib 等

相关问题2:您用过模板引擎吗? 如果是,您使用的模板引擎的名称是什么?

聪明人

17、PHP如何实现页面跳转

方法一:php函数跳转,缺点是头部之前不能有输出,跳转后的程序继续执行,可以通过exit中断前面的程序。

header("位置:URL");//直接跳转

php 生成随机数-PHP笔试题——PHP核心技术(中级部分)

header("refresh:3;url=http://axgle.za.net");//三秒后跳转

方法2:借助meta

回声“”;

18. PHP可以连接sqlserver/oracle等数据库吗?

19. 使用哪些工具进行版本控制?

SVN 或 CVS

相关主题:你用过版本控制软件吗? 如果是,您使用的版本控制软件的名称是什么?

乌龟SVN-1.2.6

20、编写正则表达式过滤网页上所有JS/VBS脚本(即去掉script标签及其内容):

过滤javascript脚本参考:

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

21. 给定一行文本 $ string,您将如何编写正则表达式来从中删除所有 HTML 标签? (雅虎)

解决方案1、使用PHP内置函数strip_tags()去除HTML标签

解决方案2,自定义函数,如下:

<?php
    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、请写一个函数,验证电文格式是否正确(需正规)(新浪)

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

相关主题:请使用正则表达式编写一个函数来验证电子消息的格式是否正确。 (辛中人云)23.请类比一下POSIX风格和Perl兼容的正则表达式的主要功能(腾讯)

主要有以下三个区别:

php 生成随机数-PHP笔试题——PHP核心技术(中级部分)

preg_replace()上面的正则可以写成:“/.xxx/”,ereg_replace()上面的正则需要写成“xxx”

preg_replace()可以操作链表,但ereg_replace()不能

0-99 可以用 preg_replace() 进行反向引用,在 ereg_replace() 中最多可以使用 9

preg_match() 函数使用 Perl 兼容的正则表达式语法,通常比 ereg() 更快。

24、请写并解释一下如何在命令行下运行PHP脚本(写两种形式)并同时向PHP脚本传递参数? (腾讯)

第一步进入php安装目录

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

php-rphpinfo(); 其中-r表示直接执行php代码,不写开始和结束标签

25.使用正则表达式提取一段标记语言(html或xml)代码段并指定指定标签的指定属性值(需要考虑属性值的不规则性,如不区分大小写,并且有一个属性名称值和等号之间的空格等等)。 这里假设需要提取test标签的attr属性值,请自行创建一个包含该标签的字符串(腾讯)

编写以下函数:

<?php
    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';printeregreplace("([0−9]+)/([0−9]+)/([0−9]+)",2 /1/ 3、日期); (雅虎)

这是将日期从 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。

允许呼叫时间通行参考

调用函数时是否启用强制参数按引用传递

30、HTML语言中,可以通过页面后面的meta标签来输出文件的编码格式。 以下是一个标准的元句子。 请用PHP语言编写一个函数,在标准的HTML页面中放入类似的meta标签,将charset部分的值改为big5。 (新浪)

请注意:

(1)需要处理一个完整的html页面,即不仅仅是这个meta语句

(2) 忽略大小写

(3)' 和 " 在这里可以互换

(4)'Content-Type'两边的冒号可以忽略,但'text/html;charset=gbk'两边的冒号不能

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

编译正则表达式如下:

$reg1="/()/i";

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php php 生成随机数-PHP笔试题——PHP核心技术(中级部分) https://www.wkzy.net/game/149498.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务