php面试题(四)附答案

1.禁用COOKIE 后 SEESION 还能用吗?
可以通过url get方式使用
2.抓取远程图片到本地,你会用什么函数?
file_get_contents 或者 curl
3.简述POST 和GET传输的最大容量分别是多少?
POST 根据你php.ini文件配置(默认是8M) GET的话 大小限制在2KB
4.用最少的代码写一个求3值最大值的函数.
m a x = m a x ( 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代码如下:
s t r = " c d " ; str="cd"; str=“landog”;
$$str.=“ok”;
echo c d ; l a n d o g o k 8. P H P 使 3 cd; 其结果是?** landogok **8.用PHP写一段代码,实现不使用第3个变量,交换 a、 b b的值, 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定长类型多了一个步骤,所以效率低一些。

发布了41 篇原创文章 · 获赞 32 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_33482132/article/details/96456055