Die neueste Zusammenfassung der PHP-Interviewfragen und Bewerbungsfragen

藏色散人
Freigeben: 2023-04-09 20:52:01
nach vorne
4874 Leute haben es durchsucht

本篇文章给大家分享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);
            }
        }
    }
}
Nach dem Login kopieren

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()
    {
    }
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

6. 转换驼峰式字符串

function conversion1 () { 
    $str = "open_door";
    return ucwords(str_replace(&#39;_&#39;,&#39; &#39;,$str)); // Open Door}
Nach dem Login kopieren

7. header( ) 跳转页面

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

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

# $str是一段html文本
$pattern = &#39;/<script.*>.*<\/script>/i&#39;;
preg_replace($pattern,&#39;&#39;,$str);
Nach dem Login kopieren

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

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

$arr = array("",1,2,3,"");
$ptn = "/\S+/i";  
print_r(preg_grep($ptn,$arr));
Nach dem Login kopieren

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

function dayCount($year, $month) {
    echo date(&#39;t&#39;, strtotime($year . &#39;-&#39; . $month . &#39;-1&#39;));
}
Nach dem Login kopieren

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));}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDie neueste Zusammenfassung der PHP-Interviewfragen und Bewerbungsfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage