編程學(xué)習(xí)網(wǎng) > PHP技術(shù) > php程序員日常工作內(nèi)容之學(xué)習(xí)筆記分享
2021
08-16

php程序員日常工作內(nèi)容之學(xué)習(xí)筆記分享

數(shù)十年來(lái),php一直是全球最受歡迎的編程語(yǔ)言之一。PHP開(kāi)發(fā)具有快速安全、易于維護(hù)、大量可用軟件庫(kù)、以及更少的手動(dòng)編程量等特點(diǎn)。如今,PHP在網(wǎng)站中的使用量已高達(dá)79%。本文將給大家分享一下php程序員日常工作內(nèi)容之學(xué)習(xí)筆記分享

1.php獲取數(shù)組中含有相同元素的方法


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;

}


說(shuō)明:遍歷數(shù)組中所有的值,先把值賦予$value,再刪除當(dāng)前元素,通過(guò)in_array函數(shù)判斷數(shù)組中是否含有當(dāng)前元素,有則將相同的元素賦予$sameArr變量,重復(fù)執(zhí)行直至所有元素


2.PHP處理微信昵稱特殊符號(hào)過(guò)濾方法

方法一:


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","","這里是昵稱")


方法三:


// 過(guò)濾掉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() 函數(shù)

array_column() 返回輸入數(shù)組中某個(gè)單一列的值。

PHP 版本:5.5+

語(yǔ)法

array_column(array,column_key,index_key);

實(shí)例

從記錄集中取出 last_name 列,用相應(yīng)的 "id" 列作為鍵值:


// 表示由數(shù)據(jù)庫(kù)返回的可能記錄集的數(shù)組

<?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()

兩個(gè)函數(shù)的區(qū)別:

當(dāng)變量為字符串'1'時(shí)

is_int()的返回值為false,

is_numeric()的返回值為true

當(dāng)變量為數(shù)字1時(shí),兩個(gè)都為true

is_int()的返回值為true

is_numeric()的返回值為true


5.PHP下開(kāi)啟PDO MySQL的擴(kuò)展

PDO擴(kuò)展為PHP訪問(wèn)數(shù)據(jù)zd庫(kù)定義了一個(gè)輕量級(jí)的、一致性的接口,它提供了一個(gè)數(shù)據(jù)訪問(wèn)抽象層,這樣,無(wú)論使用什么數(shù)據(jù)庫(kù),都可以通過(guò)一致的函數(shù)版執(zhí)行查詢和獲取數(shù)據(jù)。

開(kāi)啟PDO和PDO_MySQL擴(kuò)展


方法:

1、找到php.ini文件

2、打開(kāi)后,搜索 extension=php_pdo.dll 和 extension=php_pdo_mysql.dll ,去掉前面“;”的注釋。

最終這兩行配權(quán)置內(nèi)容如下:


extension=php_pdo.dll

extension=php_pdo_mysql.dll


重新啟動(dòng)apache或者iis后,在phpinfo函數(shù)中查看,是否開(kāi)啟


6.PHP將字符串的每個(gè)單詞的首字符變成大寫(xiě)

將傳入的字符串的每個(gè)單詞的首字符變成大寫(xiě)


$str = 'hellow word';

echo ucwords($str);

//輸出:Hellow Word


7.PHP將字符串中所有單詞改為大寫(xiě)

將字符串中所有單詞改為大寫(xiě)并且返回轉(zhuǎn)換后的字符串


$str = "Hello Word";

$str = strtolower($str);

echo $str; //輸出HELLOW WORD


8.PHP將所有單詞改為小寫(xiě)

將字符串中所有單詞改為小寫(xiě)并且返回轉(zhuǎn)換后的字符串


$str = "Hello Word";

$str = strtolower($str);

echo $str; //輸出hellow word


9.PHP首字母大寫(xiě)

將字符串首字母轉(zhuǎn)換成大寫(xiě),直接返回轉(zhuǎn)換后的字符串


$foo = 'hello world!';

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



10.Thinkphp header獲取參數(shù)失敗的原因

比如我們前后分離的時(shí)候常用在頭部傳入token的方式


正常情況下


$header = Request::header();


即可獲取到頭部所有參數(shù),但最近發(fā)現(xiàn)獲取不到access_token

F12調(diào)試的時(shí)候access_token明明有值,也傳過(guò)去了,但php就是獲取不到

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

解決:把a(bǔ)ccess_token改為access-token或者token即可


11.PHP驗(yàn)證身份證格式的公共方法


/**

* 身份證驗(yàn)證函數(shù)

* @param $idcard

* @return bool

*/

function check_idcard($idcard){

   // 只能是18位

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

       return false;

   }

   // 取出本體碼

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

   // 取出校驗(yàn)碼

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

   // 加權(quán)因子

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

   // 校驗(yàn)碼對(duì)應(yīng)值

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

   // 根據(jù)前17位計(jì)算校驗(yàn)碼

   $total = 0;

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

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

   }

   // 取模

   $mod = $total % 11;

   // 比較校驗(yàn)碼

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

       return true;

   }else{

       return false;

   }

}


12.報(bào)錯(cuò):trim() expects parameter 1 to be string, int given

主要是trim缺少參數(shù)

注:參數(shù)必須是字符串(整型也會(huì)報(bào)錯(cuò))


13.PHP實(shí)現(xiàn)手機(jī)號(hào)碼中間四位數(shù)替換成星號(hào)*

示例:


字符串截取法


/**

* 中間加密 字符串截取法

*/

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引入的“??”和“?:”的區(qū)別


??是PHP7新增的特性

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

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

empty: 判斷一個(gè)變量是否為空(null、false、00、0、’0′、』這類,都會(huì)返回true)。

isset: 判斷一個(gè)變量是否設(shè)置(值為false、00、0、’0′、』這類,也會(huì)返回true)。



15.PHP生成一個(gè)六位數(shù)的核銷碼

PHP生成一個(gè)六位數(shù)的核銷碼


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


不管是多少位數(shù),隨機(jī)總會(huì)有概率重復(fù)

建議在插入數(shù)據(jù)庫(kù)之前,先去查詢當(dāng)前表是否已經(jīng)有該碼

有:重新生成

沒(méi)有:直接插入

以上就是“php程序員日常工作內(nèi)容之學(xué)習(xí)筆記分享”的詳細(xì)內(nèi)容,想要了解更多php教程歡迎關(guān)注編程學(xué)習(xí)網(wǎng)

掃碼二維碼 獲取免費(fèi)視頻學(xué)習(xí)資料

Python編程學(xué)習(xí)

查 看2022高級(jí)編程視頻教程免費(fèi)獲取