Home > Backend Development > PHP Tutorial > The latest summary of PHP interview questions and application questions

The latest summary of PHP interview questions and application questions

藏色散人
Release: 2023-04-09 20:52:01
forward
4927 people have browsed it

本篇文章给大家分享PHP面试题之应用题最新汇总,有一定的参考价值,需要的朋友可以参考一下,希望对大家有所帮助。

相关推荐:《2021年PHP面试题大汇总(收藏)

1. 遍历目录下的所有文件及文件夹

function fileShow($dir){                           
    $handle = opendir($dir);                     // 打开目录句柄
    while ($file = readdir($handle)) {           // 返回目录句柄中的条目
        if ($file !== '..' && $file !== '.') {
            $f = $dir . '/' . $file;
            if (is_file($f)) {
                echo &#39;|--&#39; . $file . &#39;<br>&#39;;     // 代表文件
            } else {
                echo &#39;--&#39; . $file . &#39;<br>&#39;;      // 代表文件夹
                fileShow($f);
            }
        }
    }
}
Copy after login

2. 单例模式创建 mysqli 链接

class db
{
    private        $con;
    private static $instance;

    /**
     * 定义一个私有的构造函数,确保单例类不能通过 new 关键字实例化,只能被其自身实例化
     */
    private function __construct($host, $username, $password, $database)
    {
        $this->con = mysqli_connect($host, $username, $password);
        if (!$this->con) die("连接失败!");
        mysqli_select_db($database);
    }

    /**
     * 创建单例
     */
    public static function getInstance($host, $username, $password, $database)
    {
        if (self::$instance) return self::$instance;
        self::$instance = new db($host, $username, $password, $database);
    }

    /**
     * 关闭数据库连接
     */
    public function close()
    {
        return mysqli_close($this->con);
    }

    /**
     * 定义私有的__clone()方法,确保单例类不能被复制或克隆
     */
    private function __clone()
    {
    }
}
Copy after login

3. 获取一个网页地址的内容

$url = "http://www.phpres.com/index.html";
$str = file_get_contents($url);

// 或 
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_exec($ch);
curl_close($ch);
Copy after login

4. 从 url 获取文件的扩展名

function getExt1 () {
    $url_path = "http://www.sina.com.cn/abc/de/fg.php?id=1";
    $temp = pathinfo($url_path, PATHINFO_EXTENSION);  //    php?id=1
    $temp = explode("?", $temp);
    echo $temp[0];  // php
}

function getExt2 () {
    $url_path = "http://www.sina.com.cn/abc/de/fg.php?id=1";
    // ["scheme" => "http","host" => "www.sina.com.cn","path" => "/abc/de/fg.php","query" => "id=1"]
    $temp = parse_url($url_path);
    echo pathinfo($temp[&#39;path&#39;], PATHINFO_EXTENSION);
}
Copy after login

5. 获取一个文件的扩展名

function get_ext1 ($file_name) {
    return strrchr($file_name, &#39;.&#39;);                     // .jpg
}

function get_ext2 ($file_name) {
    return substr($file_name, strrpos($file_name, &#39;.&#39;)); // .jpg
}

function get_ext3 ($file_name) {
    $tmp = explode(&#39;.&#39;, $file_name);
    return array_pop($tmp);                              // jpg
}

function get_ext4 ($file_name) {
    return pathinfo($file_name, PATHINFO_EXTENSION);    // jpg
}
Copy after login

6. 转换驼峰式字符串

function conversion1 () { 
    $str = "open_door";
    return ucwords(str_replace(&#39;_&#39;,&#39; &#39;,$str)); // Open Door}
Copy after login

7. header( ) 跳转页面

header(&#39;location:index.php&#39;);     // 跳转页面
header("HTTP/1.1 404 Not Found"); // 实现页面404错误提示功能
Copy after login

8. 使用正则表达式去除其中的所有js脚本

# $str是一段html文本
$pattern = &#39;/<script.*>.*<\/script>/i&#39;;
preg_replace($pattern,&#39;&#39;,$str);
Copy after login

9. 将一个数组里的空值去掉

\S 匹配任何非空白字符。i不区分大小写

$arr = array("",1,2,3,"");
$ptn = "/\S+/i";  
print_r(preg_grep($ptn,$arr));
Copy after login

10. 给出年份和月份,输出指定月份的天数

function dayCount($year, $month) {
    echo date(&#39;t&#39;, strtotime($year . &#39;-&#39; . $month . &#39;-1&#39;));
}
Copy after login

11. 编写函数取得上一月的最后一天

function get_last_month_last_day(){
    $date = "2021-2-18";
    $time = strtotime($date);
    $day  = date(&#39;j&#39;,$time); // 获取该日期是当前月的第几天
    return date(&#39;Y-m-d&#39;,strtotime("-{$day} days",$time));}
Copy after login

12. 确保多个进程同时写入同一个文件成功

$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);
Copy after login

13. 将字符串08/26/2003替换为2003-08-26

 $str     = &#39;08/26/2003&#39;;
 $pattern = &#39;/(\d+)\/(\d+)\/(\d+)/&#39;;
 $rep     = &#39;$3-$1-$2&#39;;
 echo preg_replace($pattern, $rep, $str);
Copy after login

14. 求两个日期的差数

// 方法一:用DateTime类
$day1 = &#39;2003-09-16&#39;;
$day2 = &#39;2011-11-23&#39;;
$d1 = new dateTime($day1);
$d2 = new dateTime($day2);
echo $d1->diff($d2)->days;

// 方法二,用时间戳计算
echo (strtotime($day2) - strtotime($day1))/(86400);
Copy after login

The above is the detailed content of The latest summary of PHP interview questions and application questions. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
php
source:learnku.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template