21xrx.com
2024-11-05 14:37:58 Tuesday
登录
文章检索 我的文章 写文章
解析php2021面试题,掌握php编程技巧
2023-06-11 04:12:41 深夜i     --     --
php编程技巧 面试题 代码示例

在php编程中,可能会遇到一些比较复杂的问题,特别是在面试的时候,面试官也会考察我们对于php知识点的掌握程度。下面是一些php2021面试题,希望对大家的php编程技巧的提高有所帮助。

一、给图像添加水印

在php写一个给图片添加水印的函数,函数名为「add_water_mark」,要求函数可以实现给jpg、png、gif等格式的图片添加不同样式的水印。

代码示例:


function add_water_mark($src_file_path, $dst_file_path, $water_mark_file_path){

  // 获取图片信息

  $info = getimagesize($src_file_path);

  // 根据图片格式选择不同的函数读取图片

  switch ($info['mime']) {

    case 'image/jpeg':

      $image = imagecreatefromjpeg($src_file_path);

      break;

    case 'image/png':

      $image = imagecreatefrompng($src_file_path);

      break;

    case 'image/gif':

      $image = imagecreatefromgif($src_file_path);

      break;

    default:

      throw new Exception('Unsupported image format');

  }

  // 读取水印图片

  $watermark = imagecreatefrompng($water_mark_file_path);

  // 按照比例缩放水印图片

  $watermark_width = imagesx($watermark);

  $watermark_height = imagesy($watermark);

  $new_width = $info[0] * 0.3;

  $new_height = $watermark_height * ($new_width / $watermark_width);

  $new_watermark = imagecreatetruecolor($new_width, $new_height);

  imagecopyresampled($new_watermark, $watermark, 0, 0, 0, 0, $new_width, $new_height, $watermark_width, $watermark_height);

  // 添加水印并保存图片

  imagecopy($image, $new_watermark, $info[0] - $new_width - 10, $info[1] - $new_height - 10, 0, 0, $new_width, $new_height);

  switch ($info['mime']) {

    case 'image/jpeg':

      imagejpeg($image, $dst_file_path);

      break;

    case 'image/png':

      imagepng($image, $dst_file_path);

      break;

    case 'image/gif':

      imagegif($image, $dst_file_path);

      break;

  }

  // 释放内存

  imagedestroy($image);

  imagedestroy($new_watermark);

  imagedestroy($watermark);

}

二、生成二维码

在php编写一个生成二维码的函数,函数名为「qrcode_generator」,要求函数可以根据输入的字符串生成对应的二维码,并将二维码保存成png图片格式。

代码示例:


function qrcode_generator($data, $filename)

{

  // 引入qrcode库

  require_once('phpqrcode.php');

  

  // 设置二维码参数

  $size = 10; // 二维码尺寸

  $level = 'L'; // 纠错等级,L、M、Q、H四个等级

  $margin = 2; // 边框尺寸,取值范围是0~10

  

  // 生成二维码

  QRcode::png($data, $filename, $level, $size, $margin);

}

三、统计一个字符串中出现次数最多的字符

在php编写一个函数「find_most_frequent_character($str)」,统计一个字符串中出现次数最多的字符,并返回该字符及其出现次数,同时还需要过滤掉空格、换行等无效字符。

代码示例:


function find_most_frequent_character($str)

{

  // 过滤无效字符

  $str = preg_replace("/[^0-9a-zA-Z\-]/", "", $str);

  

  // 统计每个字符出现的次数

  $arr = array();

  for ($i = 0; $i < strlen($str); $i++){

    $char = substr($str, $i, 1);

    if (!isset($arr[$char])) {

      $arr[$char] = 1;

    } else {

      $arr[$char]++;

    }

  }

  

  // 找出出现次数最多的字符

  $max_count = 0;

  $most_frequent_char = '';

  foreach ($arr as $key => $value) {

    if ($value > $max_count) {

      $max_count = $value;

      $most_frequent_char = $key;

    }

  }

  

  // 返回结果

  return array(

    'most_frequent_char' => $most_frequent_char,

    'count' => $max_count

  );

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复