php面試題(四)附答案

1.禁用COOKIE 後 SEESION 還能用嗎?
可以通過url get方式使用
2.抓取遠程圖片到本地,你會用什麼函數?
file_get_contents 或者 curl
3.簡述POST 和GET傳輸的最大容量分別是多少?
POST 根據你php.ini文件配置(默認是8M) GET的話 大小限制在2KB
4.用最少的代碼寫一個求3值最大值的函數.
max=max(max = max(a ,$b $c);
5.用PHP打印出前一天的時間,打印格式是2019年7月18日 21:17:21
echo date(‘Y-m-d H:i:s’, strtotime(’-1 day’));
6.PHP代碼如下:
$a=“hello”;
KaTeX parse error: Expected 'EOF', got '&' at position 3: b=&̲a;
unset($b);
$b=“world”;
echo $a;
其結果是

hello
7.PHP代碼如下:
str="cd";str="cd";str=“landog”;
$$str.=“ok”;
echo cd;landogok8.PHP使3cd; 其結果是?** landogok **8.用PHP寫一段代碼,實現不使用第3個變量,交換a、bb的值,a、$b的初始值自己定。

$a = "abcd";
$b = "1234";
echo "初始化時 a=$a,b=$b<br>";
$a = $a . $b;
$b = strlen( $b );
$b = substr( $a, 0, (strlen($a) - $b ) );
$a = substr( $a, strlen($b) );
echo "交換後 a=$a,b=$b<br>";

9. javascript能否定義二維數組,如果不能你如何解決?
arr[0] = new array()
10. 假設a.html和b.html在同一個文件夾下面,用javascript實現當打開a.html五秒鐘後,自動跳轉到b.html。

<script>
function go2b(){
window.location = "b.html";
window.close();
}
setTimeout( "go2b()",5000 ); //5秒鐘後自動執行go2b()
</script>

11. 利用CSS樣式表定義已訪問的超鏈接字體大小爲14pt,顏色爲red。
a:visited { font-size: 14pt; color: red; }
12. 寫一個排序算法,可以是冒泡排序或者是快速排序,假設待排序對象是一個維數組。(提示:不能使用系統已有函數,另外請仔細回憶以前學習過的基礎知識)
//冒泡排序(數組排序)

function bubble_sort($array)
{
$count = count($array);
if ($count <= 0) return false;
for($i=0; $i<$count; $i++){
       for($j=$count-1; $j>$i; $j--){
         if ($array[$j] < $array[$j-1]){
            $tmp = $array[$j];
            $array[$j] = $array[$j-1];
            $array[$j-1] = $tmp;
         }
       }
}
return $array;
}

//快速排序(數組排序)

function quicksort($array) {
if (count($array) <= 1) return $array;
$key = $array[0];
$left_arr = array();
$right_arr = array();
for ($i=1; $i<count($array); $i++){
       if ($array[$i] <= $key)
         $left_arr[] = $array[$i];
       else
         $right_arr[] = $array[$i];
}
$left_arr = quicksort($left_arr);
$right_arr = quicksort($right_arr);
return array_merge($left_arr, array($key), $right_arr);
}

13.實現一個字符串截取的函數,類似於substr,必須能夠截取中文這種多字節編碼。假設每個中文也是一個字符,普通的數字、符號、字母也是一個字符。(提示:GB編碼的中文字符高位範圍是 0x81-0xFE )
/**

  • 截取字符串子串 (1)(GBK)
  • @param string $str 原始字符串
  • @param int $len 需要截取字符串的長度
  • @return string 返回截取到的字符串
    */
unction GBSubstr($str, $len){
$count = 0;
for($i=0; $i<strlen($str); $i++){
if($count == $len) break;
if(preg_match("/[\x80-\xff]/", substr($str, $i, 1))) ++$i;
++$count;      
}
return substr($str, 0, $i);
}

/**

  • 截取字符串子串函數(2)(GB)
  • @param string $src 源字符串
  • @param int $start 開始截取的位置
  • @param int $length 需要截取字符串的長度
  • @return string 返回截取的字符串
    */
function GBSubstr2($src, $start=0, $length=0){
$suffix="";
$len = strlen($src);
if ( $len <= $length ) return $src;

$cut_length = 0;
for( $idx = 0; $idx<$length; $idx++){
$char_value = ord($src[$idx]);
if ( $char_value < 0x80 || ( $char_value & 0x40 ) )
$cut_length++;
else
$cut_length = $cut_length + 3;
}
$curstr = substr($src, 0, $cut_length) ;
preg_match('/^([\x00-\x7f]|.{3})*/', $curstr, $result);
return   $result[0];
}

/**

  • 中文字符串截取(3)(支持GB2312/GBK/UTF-8/BIG5)
  • @param string $str 要截取的字串
  • @param int $start 截取起始位置
  • @param int $length 截取長度
  • @param string $charset 字符串的字符集,包括有 utf-8|gb2312|gbk|big5 編碼
  • @param bool $suffix 是否加尾綴
  • @return string 返回接續字符串的結果
    */
function CSubstr($str, $start=0, $length, $charset="gbk", $suffix=false){
if(function_exists("mb_substr")){
return mb_substr($str, $start, $length, $charset);
}
$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";

preg_match_all($re[$charset], $str, $match);
$slice = join("", array_slice($match[0], $start, $length));

if($suffix) {
return $slice ."…";
}
return $slice;
}

13.寫出匹配郵箱地址和URL的兩個正則表達式。類似下面的:
郵箱地址:[email protected]
URL地址:http://www.example.com.cn/user_profile.php?uid=100
(提示:使用標準的正則表達式,就是PHP中preg_* 類的正則處理函數能夠解析的正則)

郵箱:/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
URL:/^http:\/\/[\w]+\.[\w]+[\S]*/

14.寫一個遍歷指定目錄下所有子目錄和子文件的函數(提示:可以使用遞歸的方法)
/**

  • 遞歸的遍歷一個指定目錄
    */
function dir_all ( $path ) {
$handler = opendir($path);
while (false!==($tmp = readdir($handler))) {
if(is_dir( "$path/$tmp" )) {
if ($tmp=="." | $tmp=="..") continue;
echo $tmp."<br>\n";
dir_all ("$path/$tmp");
} else {
echo $tmp ."<br>\n";
}
}
}

15.MySQL數據庫中的字段類型varchar和char的主要區別是什麼?那種字段的查找效率要高,爲什麼?
Varchar是變長,節省存儲空間,char是固定長度。查找效率要char型快,因爲varchar是非定長,必須先查找長度,然後進行數據的提取,比char定長類型多了一個步驟,所以效率低一些。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章