php面试题集-基础程序题
基础程序题
用PHP打印出前一天的时间格式是2006-5-10 22:21:21
date('Y-m-d H:i:s', strtotime('-1 day'));
如何实现字符串翻转?
方法一:
<?phpfunction reverse($var) { $res = ""; for($i = 0, $j = strlen($var);$i<$j;$i++) { $res = $var[$i].$res; } return $res;}$tmpvar = "wofang";$res = reverse($tmpvar);echo $res;?>
<?php echo strrev("Hello world!"); // outputs "!dlrow olleH" ?>
写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
<?php /** * 遍历目录,结果存入数组。支持php4及以上。php5以后可用scandir()函数代替while循环。 * @param string $dir * @return array */function my_scandir( $dir ) { $files = array(); if ( $handle = opendir( $dir ) ) { while ( ($file = readdir( $handle )) !== false ) { if ( $file != '..' && $file != '.' ) { if ( is_dir( $dir . '/' . $file ) ) { $files[$file] = rec_scandir( $dir . '/' . $file ); } else { $files[] = $file; } } } closedir( $handle ); return $files; }}?>
请写一个函数验证电子邮件的格式是否正确
<?phpfunction checkEmail( $email ) { $preg = "/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i"; return preg_match( $preg, $email );}?>
有一个网页地址, 比如PHP开发资源网主页: http://www.phpres.com/index.html,如何得到它的内容?
方法一(对于php5及更高版本):
<?php $readcontents = fopen('http://www.phpers.com/index.html');$contents = stream_get_contents($readcontents);fclose($readcontents);echo $contents;?>
<?php echo file_get_contents('http://www.phpers.com/index.html'); ?>
如何得到当前执行脚本路径,包括所得到参数。
说明:例如有一个脚本 www.domain.com, 传给他的参数有参数1,参数2,参数3….传递参数的方法有可能是GET有可能是POST,
那么现在请写出类似http://www.domain.com/script.php? 参数1=值1&参数2=值2..... 的结果
暂无答案
写一个排序算法,可以是冒泡排序或者是快速排序,假设待排序对象是一个一维数组。
(提示:不能使用系统已有函数,另外请仔细回忆以前学习过的基础知识)
<?php /** * 排序类 */class Sort { /* * 冒泡排序 小到大 */ public function bubble_sort( $array ) { $count = count( $array ); if ( $count <= 0 ) return false; for ( $i = 0; $i < $count; $i++ ) { for ( $j = 1; $j <= $count - $i - 1; $j++ ) { if ( $array[$j] < $array[$j - 1] ) { $tmp = $array[$j]; $array[$j] = $array[$j - 1]; $array[$j - 1] = $tmp; } } } return $array; } /** * 快速排序 */ public function quick_sort( $arr ) { $len = count( $arr ); if ( $len <= 1 ) return $arr; $key = $arr[0]; $left_arr = $right_arr = array(); for ( $i = 1; $i < $len; $i++ ) { if ( $arr[$i] <= $key ) $left_arr[] = $arr[$i]; else $right_arr[] = $arr[$i]; } $left_arr = $this->quick_sort( $left_arr ); $right_arr = $this->quick_sort( $right_arr ); return array_merge( $left_arr, array( $key ), $right_arr ); } /** * 希尔排序 */ public function shell_sort( $datas ) { //分组 for ( $increment = count( $datas ) / 2; $increment > 0; $increment = $increment / 2 ) { //每个组内排序 for ( $i = $increment; $i = $increment; $j = $j - $increment ) { if ( $temp
有一表 menu(mainmenu, submenu, url), 请用递归法写出一树形菜单,将所有的menu列出来。
暂无答案
给你三个数,写程序求出其最大值。
暂无答案
有一数组 $a=array(4,3,8,9,2);请将其重新排序,按从小到大的顺序列出。
暂无答案
写出匹配邮箱地址和URL的两个正则表达式。类似下面的:
邮箱地址:user_name.first@example.com.cn
URL地址:http://www.example.cpm.cn/user_profile.php?uid=100
(提示:使用标准的正则表达式,就是php中preg_*类的正则处理函数能够解析的正则)
邮箱:/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
URL:/^http:\/\/[\w]+\.[\w]+[\S]*/
用php写一段代码,实现不使用第3个变量,交换$a、$b的值,$a、$b的初始值自己定。
<?php $a = 1; $b = 2; list($b, $a) = array($a, $b);?>
写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
答案1:
<?phpfunction getExt($url){ $arr = parse_url($url); $file = basename($arr['path']); $ext = explode(".", $file); return $ext[1];}?>
<?phpfunction getExt($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); }}?>
写一个函数,算出两个文件的相对路径
如 $a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
计算出 $b 相对于 $a 的相对路径应该是 ../../c/d
<?php function getRelativePath( $a, $b ) { $returnPath = array( dirname( $b ) ); $arrA = explode( '/', $a ); $arrB = explode( '/', $returnPath[0] ); for ( $n = 1, $len = count( $arrB ); $n < $len; $n++ ) { if ( $arrA[$n] != $arrB[$n] ) { break; } } if ( $len - $n > 0 ) { $returnPath = array_merge( $returnPath, array_fill( 1, $len - $n, '..' ) ); } $returnPath = array_merge( $returnPath, array_slice( $arrA, $n ) ); return implode( '/', $returnPath ); } echo getRelativePath( $a, $b );?>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

RESTAPI設計原則包括資源定義、URI設計、HTTP方法使用、狀態碼使用、版本控制和HATEOAS。 1.資源應使用名詞表示並保持層次結構。 2.HTTP方法應符合其語義,如GET用於獲取資源。 3.狀態碼應正確使用,如404表示資源不存在。 4.版本控制可通過URI或頭部實現。 5.HATEOAS通過響應中的鏈接引導客戶端操作。

在PHP中,異常處理通過try,catch,finally,和throw關鍵字實現。 1)try塊包圍可能拋出異常的代碼;2)catch塊處理異常;3)finally塊確保代碼始終執行;4)throw用於手動拋出異常。這些機制幫助提升代碼的健壯性和可維護性。

匿名類在PHP中的主要作用是創建一次性使用的對象。 1.匿名類允許在代碼中直接定義沒有名字的類,適用於臨時需求。 2.它們可以繼承類或實現接口,增加靈活性。 3.使用時需注意性能和代碼可讀性,避免重複定義相同的匿名類。

在PHP中,include,require,include_once,require_once的區別在於:1)include產生警告並繼續執行,2)require產生致命錯誤並停止執行,3)include_once和require_once防止重複包含。這些函數的選擇取決於文件的重要性和是否需要防止重複包含,合理使用可以提高代碼的可讀性和可維護性。

PHP中有四種主要錯誤類型:1.Notice:最輕微,不會中斷程序,如訪問未定義變量;2.Warning:比Notice嚴重,不會終止程序,如包含不存在文件;3.FatalError:最嚴重,會終止程序,如調用不存在函數;4.ParseError:語法錯誤,會阻止程序執行,如忘記添加結束標籤。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。
