[toc]
## :-: **去掉下劃線 && 首字母轉成大寫**
```php
/**
* 字符串去掉下劃線&&首字符轉成大寫
* @param $str 待轉換的字符串
* @return string
*/
function myucfirst($str){
$arr = explode('_',$str); //去掉_
$temp = '';
//如果下劃線和大于1個就循環去掉下劃線 && 首字母轉換為大寫
if(count($arr) > 1){
foreach($arr as $key => $value){
$temp .= ucfirst($value);
}
}else{
//否則 純字符 首字母轉大寫
$temp = ucfirst($str);
}
return $temp;
}
```
## :-: **正則 去掉 html標簽**
```php
/**
* 返回指定長度的文本(正則匹配去掉HTML標識)
* @param $html
* @param $max
* @return string
*/
function getClearText( $html , $max = 0 )
{
if ( empty( $html ) ) {
return '';
}
$html = preg_replace( '/<[^>]*>/' , '' , $html );
$html = preg_replace( '/[\r\n\t]/' , '' , $html );
if ( $max > 0 ) {
$len = strlen( $html );
if ( $len > $max ) {
$tmp0 = 0;
$tmp1 = 0;
$tmp2 = 0;
preg_match_all( '/./us' , $html , $match );
foreach ( $match[0] as $value ) {
$tmp0 = strlen( $value );
if ( $tmp0 == 1 ) {
$tmp1 += 1;
} else {
$tmp1 += 2;
}
$tmp2 += $tmp0;
if ( $tmp1 >= $max ) {
$html = substr( $html , 0 , $tmp2 );
break;
}
}
}
}
return $html;
}
```
## :-: **防xss攻擊**
```php
/**
* 過濾字符串,防止xss攻擊
* @param $string
* @param bool $low 安全級別低
* @return bool
*/
function clean_xss(&$string, $low = false)
{
if (! is_array ( $string ))
{
$string = trim ( $string );
$string = strip_tags ( $string );
$string = htmlspecialchars ( $string );
if ($low)
{
return True;
}
$string = str_replace ( array ('"', "\\", "'", "/", "..", "../", "./", "//" ), '', $string );
$no = '/%0[0-8bcef]/';
$string = preg_replace ( $no, '', $string );
$no = '/%1[0-9a-f]/';
$string = preg_replace ( $no, '', $string );
$no = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S';
$string = preg_replace ( $no, '', $string );
return True;
}
$keys = array_keys ( $string );
foreach ( $keys as $key )
{
clean_xss ( $string [$key] );
}
}
die;
//測試xss攻擊
echo $str = '<meta http-equiv="refresh" content="0;">'; //網頁不停地刷新
echo $str = "<iframe src=http://xxxx width=250 height=250></iframe>"; //嵌入其它網站的鏈接
echo $info = clean_xss($str); //調用
```
## :-: **字符串 轉 數組**
```php
/**
* 字符串 轉變為 數組格式
* @param $query 可以使用parse_url()獲取到的query參數。
* @return array array (size=10)
*/
function strToArr($query)
{
$queryParts = explode('&', $query);
$params = array();
foreach ($queryParts as $v) {
$item = explode('=', $v);
$params[$item[0]] = $item[1];
}
return $params;
}
```
## :-: **數組 轉 字符串**
```php
/**
* 數組 轉變為 字符串格式
* @param $array_query
* @return string string 'm=content&c=index'
*/
function arrToStr($array_query)
{
$tmp = array();
foreach($array_query as $k=>$v)
{
$tmp[] = $k.'='.$v;
}
$params = implode('&',$tmp); //拿&分割
return $params;
}
```
## :-: **url分層**
```php
/**
* 以/分割,獲取url的層級
* @param $url 待操作的url
* @return array
* @author yzm
*/
function getUrlDevel($url){
$arr = parse_url($url);
$strs = explode('/',$arr['path']);
$temp = [];
$temp[] = $arr['scheme'];
$m = $arr['scheme']."://".$arr['host'];
$temp[] = $arr['scheme']."://".$arr['host'];
$t = '';
for ($i=1;$i<count($strs);$i++) {
$t .= '/'.$strs[$i];
$temp[] .= $m.$t;
}
return $temp;
}
```
調用示例:
$url = 'http://172.16.10.81/web/index.php/test ';

## :-: **不連續的url分層**
```php
/**
* 以/分割,返回不連續url的層級
* @param $url 待操作的url
* @return array
*/
function getUrlDevel($url){
$arr = parse_url($url);
$temp = [];
$temp[] = $arr['scheme']; //將http塞入臨時數組
$temp[] = $arr['scheme']."://".$arr['host']; //將http://172.16.10.81塞入臨時數組
$strs = explode('/',$arr['path']); //去除http://172.16.10.81 剩余的
foreach($strs as $k => $v){
$temp[] = $v;
}
//搜索$v中的空值,返回的是鍵名
$del = array_search('', $temp);
if ($del !== false){
//要刪除的 鍵名 存在
array_splice($temp, $del, 1); //只刪除一個鍵
}
return $temp;
}
不連續url的層級
* @param $url 待操作的url
* @return array
*/
function getUrlDevel($url){
$arr = parse_url($url);
$temp = [];
$temp[] = $arr['scheme']; //將http塞入臨時數組
$temp[] = $arr['scheme']."://".$arr['host']; //將http://172.16.10.81塞入臨時數組
$strs = explode('/',$arr['path']); //去除http://172.16.10.81 剩余的
foreach($strs as $k => $v){
$temp[] = $v;
}
//搜索$v中的空值,返回的是鍵名
$del = array_search('', $temp);
if ($del !== false){
//要刪除的 鍵名 存在
array_splice($temp, $del, 1); //只刪除一個鍵
}
return $temp;
}
```
調用示例:
$url\='http://172.16.10.81/web/index.php/test ';

- 雜談
- 開發 & 維護的工作流程
- 新手如何看php手冊 和 框架手冊
- 開發 & 維護的不同點
- 從0到1,搭建新項目的工作流程
- 從1到N,維護的工作流程
- 優化流程
- 生成錯誤日志和慢日志的方法
- 查錯思路
- 怎么快速接手一個項目
- 前端常用知識點
- javascript
- 自己封裝的函數
- 處理數字
- 功能代碼
- 動態添加圖片
- 判斷是手機端還是pc端
- javascript:;是什么意思?怎么用呢
- html & h5
- a標簽中target設置為blank和_blank有什么區別?
- 亂碼
- 提交方式:button標簽 和 input
- 塊元素
- 內聯元素
- h5特有屬性
- h5的localStorage【增、刪、改、查】
- jquery
- 常用方法
- 功能代碼
- 動態刪除圖片
- 一個按鈕,切換2種狀態
- 換膚
- 深入理解(function(){... })();
- json & xml
- json
- 語法速記
- json對象取值
- 字符串、對象、數組的區別
- xml
- [CDATA[%s]]的作用是什么
- 轉義字符
- CDATA 想被xml解析的文本數據
- CDATA 不想被xml解析的文本數據
- 微信小程序
- 其他
- websocket
- 跨域
- css
- 行內 & 內連 & 外連 寫法
- 優先級
- 更加精準的匹配
- 使用百分比如何生效
- php在html、js、jq中的的原生寫法
- *php在html中的語法
- php在js中的語法
- php在jq中的語法
- 正則表達式
- php常用基礎知識(思想為主)
- php為什么是“邊編譯邊運行”
- 冒號、endif、endwhile、endfor使用
- 遞歸思想(速記法)
- cookie和session的理解
- php常用內置(系統)函數
- 常量
- 字符串
- 數組
- 日期時間
- 文件 & 目錄
- 數學
- 程序執行
- 判斷
- 選項和信息(修改配置文件的)
- 錯誤處理 & 日志記錄
- 編碼格式
- session
- IP相關
- 類 & 對象
- 性能
- 其他函數
- 魔術方法
- $_SERVER
- 變量處理
- php自己封裝的一些函數
- 導入、導出、生成文件
- 數組
- 數字
- 字符串
- 其他
- 獲取linux硬件信息
- 常見插件/類庫使用
- 前端-框架/插件
- bootstrap 學習筆記
- layer 學習筆記
- layDate 學習筆記
- 百度ueditor1.4.4.3富文本編輯器
- quill富文本編輯器
- 百度ECharts圖形報表
- webuploader上傳圖片
- 后端類庫
- workerman 聊天室
- QRCODE 二維碼
- redis
- seaslog 日志
- phpspider 爬蟲
- Mailer 發送郵件
- simple_html_dom
- phpstorm使用
- 快捷鍵
- 連接mysql數據庫
- 斷點 + debug調試
- 運行內存不夠
- wamp環境
- yii、laravel、tp、開發自己的php框架
- 看框架源碼的思路
- tp5框架的使用
- 1、助手函數原理解析
- 開發自己的php框架
- 常用的開發思路 和 小功能實現代碼
- 爬蟲思路
- 功能點思路
- tp5判斷是不是異地登錄(簡單版)
- 微信開發,反向代理
- 微信開發,關閉當前頁面
- 消息隊列的實現
- 頁面靜態化
- session串號
- 站內信設計思路
- web在線管理器
- 語言相關(開發有關)
- 接收json(text/xml)格式數據
- 原生文件上傳(狀態碼)
- openssl擴展
- 打印對象 和 遍歷對象
- 使用OB緩存的幾個原則
- CLI模式執行php文件
- foreach時,添加元素 或 修改元素的值
- 功能點 代碼實現
- 生成url目錄樹(沒有pid)
- 多圖上傳(vue傳base64)
- 下載文件,耗時算法
- 生成商品二維碼
- 導出excel
- 搜索
- 阿里大魚發短信
- 使用阿里云oss
- location.href跳轉后,丟失用戶的session
- “\r ” “\r\n” “\t”的區別
- php的配置文件詳解
- 開啟錯誤日志
- 開啟慢日志
- 開啟短標簽
- 分析php-fpm.conf中的request_terminate_timeout參數