首页 > PHP技术 > php程序员日常工作内容之学习笔记分享
2021
08-16

php程序员日常工作内容之学习笔记分享

数十年来,php一直是全球最受欢迎的编程语言之一。PHP开发具有快速安全、易于维护、大量可用软件库、以及更少的手动编程量等特点。如今,PHP在网站中的使用量已高达79%。本文将给大家分享一下php程序员日常工作内容之学习笔记分享

1.php获取数组中含有相同元素的方法


public function get_array_same_value($arr){

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

     $value = $val;

      unset($arr[$key]);

      if(in_array($value,$arr)){

          $sameArr[] = $value;

      }

  }

  return $sameArr;

}


说明:遍历数组中所有的值,先把值赋予$value,再删除当前元素,通过in_array函数判断数组中是否含有当前元素,有则将相同的元素赋予$sameArr变量,重复执行直至所有元素


2.PHP处理微信昵称特殊符号过滤方法

方法一:


protected function removeEmoji($clean_text) {



   // Match Emoticons

   $regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u';

   $clean_text = preg_replace($regexEmoticons, '', $clean_text);



   // Match Miscellaneous Symbols and Pictographs

   $regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u';

   $clean_text = preg_replace($regexSymbols, '', $clean_text);



   // Match Transport And Map Symbols

   $regexTransport = '/[\x{1F680}-\x{1F6FF}]/u';

   $clean_text = preg_replace($regexTransport, '', $clean_text);



   // Match Miscellaneous Symbols

   $regexMisc = '/[\x{2600}-\x{26FF}]/u';

   $clean_text = preg_replace($regexMisc, '', $clean_text);



   // Match Dingbats

   $regexDingbats = '/[\x{2700}-\x{27BF}]/u';

   $clean_text = preg_replace($regexDingbats, '', $clean_text);



   return $clean_text;

}


方法二:


preg_replace("/[\x{1F600}-\x{1F64F}\x{1F300}-\x{1F5FF}\x{1F680}-\x{1F6FF}\x{2600}-\x{26FF}\x{2700}-\x{27BF}]/u","","这里是昵称")


方法三:


// 过滤掉emoji表情

function filterEmoji($str){

 $str = preg_replace_callback( '/./u',

     function (array $match) {

       return strlen($match[0]) >= 4 ? '' : $match[0];

     },

     $str);

  return $str;

}


3.PHP array_column() 函数

array_column() 返回输入数组中某个单一列的值。

PHP 版本:5.5+

语法

array_column(array,column_key,index_key);

实例

从记录集中取出 last_name 列,用相应的 "id" 列作为键值:


// 表示由数据库返回的可能记录集的数组

<?php

$a = array(

 array(

   'id' => 5698,

   'first_name' => 'Bill',

   'last_name' => 'Gates',

 ),

 array(

   'id' => 4767,

   'first_name' => 'Steve',

   'last_name' => 'Jobs',

 ),

 array(

   'id' => 3809,

   'first_name' => 'Mark',

   'last_name' => 'Zuckerberg',

 )

);

$last_names = array_column($a, 'last_name');

print_r($last_names);

?>


输出:


Array(  [0] => Gates  [1] => Jobs  [2] => Zuckerberg)


4.PHP判断变量是否为整型

1、is_int()

2、is_numeric()

两个函数的区别:

当变量为字符串'1'时

is_int()的返回值为false,

is_numeric()的返回值为true

当变量为数字1时,两个都为true

is_int()的返回值为true

is_numeric()的返回值为true


5.PHP下开启PDO MySQL的扩展

PDO扩展为PHP访问数据zd库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数版执行查询和获取数据。

开启PDO和PDO_MySQL扩展


方法:

1、找到php.ini文件

2、打开后,搜索 extension=php_pdo.dll 和 extension=php_pdo_mysql.dll ,去掉前面“;”的注释。

最终这两行配权置内容如下:


extension=php_pdo.dll

extension=php_pdo_mysql.dll


重新启动apache或者iis后,在phpinfo函数中查看,是否开启


6.PHP将字符串的每个单词的首字符变成大写

将传入的字符串的每个单词的首字符变成大写


$str = 'hellow word';

echo ucwords($str);

//输出:Hellow Word


7.PHP将字符串中所有单词改为大写

将字符串中所有单词改为大写并且返回转换后的字符串


$str = "Hello Word";

$str = strtolower($str);

echo $str; //输出HELLOW WORD


8.PHP将所有单词改为小写

将字符串中所有单词改为小写并且返回转换后的字符串


$str = "Hello Word";

$str = strtolower($str);

echo $str; //输出hellow word


9.PHP首字母大写

将字符串首字母转换成大写,直接返回转换后的字符串


$foo = 'hello world!';

$foo = ucfirst($foo);             // Hello world!



10.Thinkphp header获取参数失败的原因

比如我们前后分离的时候常用在头部传入token的方式


正常情况下


$header = Request::header();


即可获取到头部所有参数,但最近发现获取不到access_token

F12调试的时候access_token明明有值,也传过去了,但php就是获取不到

原因:access_token命名是用_下滑杠分割,但header一般都是用-分割

解决:把access_token改为access-token或者token即可


11.PHP验证身份证格式的公共方法


/**

* 身份证验证函数

* @param $idcard

* @return bool

*/

function check_idcard($idcard){

   // 只能是18位

   if(strlen($idcard)!=18){

       return false;

   }

   // 取出本体码

   $idcard_base = substr($idcard, 0, 17);

   // 取出校验码

   $verify_code = substr($idcard, 17, 1);

   // 加权因子

   $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);

   // 校验码对应值

   $verify_code_list = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');

   // 根据前17位计算校验码

   $total = 0;

   for($i=0; $i<17; $i++){

       $total += substr($idcard_base, $i, 1)*$factor[$i];

   }

   // 取模

   $mod = $total % 11;

   // 比较校验码

   if($verify_code == $verify_code_list[$mod]){

       return true;

   }else{

       return false;

   }

}


12.报错:trim() expects parameter 1 to be string, int given

主要是trim缺少参数

注:参数必须是字符串(整型也会报错)


13.PHP实现手机号码中间四位数替换成星号*

示例:


字符串截取法


/**

* 中间加密 字符串截取法

*/

public static function encryptTel($tel) {

   $new_tel = substr($tel, 0, 3).'****'.substr($tel, 7);

   return $new_tel;

}



替换字符串


/**

* 中间加密 替换字符串的子串

*/

public static function encryptTel($tel) {

   $new_tel = substr_replace($tel, '****', 3, 4);

   return $new_tel;

}



正则


/**

* 中间加密 用正则

*/

public static function encryptTel($tel) {

   $new_tel = preg_replace('/(\d{3})\d{4}(\d{4})/', '$1****$2', $tel);

   return $new_tel;

}


14.PHP7引入的“??”和“?:”的区别


??是PHP7新增的特性

$a ?? 0 等同于 isset($a) ? $a : 0。

$a ?: 0 等同于 $a ? $a : 0。

empty: 判断一个变量是否为空(null、false、00、0、’0′、』这类,都会返回true)。

isset: 判断一个变量是否设置(值为false、00、0、’0′、』这类,也会返回true)。



15.PHP生成一个六位数的核销码

PHP生成一个六位数的核销码


$unique_no = substr(base_convert(md5(uniqid(md5(microtime(true)),true)), 16, 10), 0, 6);


不管是多少位数,随机总会有概率重复

建议在插入数据库之前,先去查询当前表是否已经有该码

有:重新生成

没有:直接插入

以上就是“php程序员日常工作内容之学习笔记分享”的详细内容,想要了解更多php教程欢迎关注编程学习网

扫码芷若 获取免费视频学习资料

编程学习

查 看2019高级编程视频教程免费获取