久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

PHP實現駝峰樣式字符串(首字母大寫)轉換成下劃線樣式字符串的方法示例

這篇文章主要介紹了PHP實現駝峰樣式字符串(首字母大寫)轉換成下劃線樣式字符串的方法,涉及php正則替換相關操作技巧,需要的朋友可以參考下

本文實例講述了PHP實現駝峰樣式字符串(首字母大寫)轉換成下劃線樣式字符串的方法。分享給大家供大家參考,具體如下:

1、如何在php中把駝峰樣式的字符串轉換成下劃線樣式的字符串。例:輸入是FooBar的話,輸出則是foo_bar

以下是用正則的方式去完成,既然用到正則,方法肯定就不只一種,我們看下下面的方式

echo strtolower(preg_replace('/(?<=[a-z])([A-Z])/', '_$1', 'fooBar'));
//output:foo_bar
echo "<br>";
echo strtolower(preg_replace('/(?<=[a-z])([A-Z])/', '_$1', 'foo'));
//output:foo
echo "<br>";
echo strtolower(preg_replace('/(?<=[a-z])([A-Z])/', '_$1', 'fooBarB'));
//output:foo_bar_b
echo "<br>";

下面我們來解釋下,上面正則的意思。具體正則的基本知識,這里篇幅有限就不具體介紹了,文章末尾會附帶幾篇總結的比較好的正則表達式的文章。

上面的正則里面主要用到了正則表達式中的環視邊界匹配的語法。具體定義如下(摘抄):

環視的字面意思就是左右看看,需要左右符合一些條件,本質上,它也是匹配邊界,對邊界有一些要求,這個要求是針對左邊或右邊的字符串的,根據要求不同,分為四種環視:

肯定順序環視,語法是(?=...),要求右邊的字符串匹配指定的表達式,比如表達式abc(?=def),(?=def)在字符c右面,即匹配c右面的邊界,對這個邊界的要求是,它的右邊有def,比如abcdef,如果沒有,比如abcd,則不匹配;

否定順序環視,語法是(?!...),要求右邊的字符串不能匹配指定的表達式,比如表達式s(?!ing),匹配一般的s,但不匹配后面有ing的s;

肯定逆序環視,語法是(?<=...),要求左邊的字符串匹配指定的表達式,比如表達式(?<=\s)abc,(?<=\s)在字符a左邊,即匹配a左邊的邊界,對這個邊界的要求是,它的左邊必須是空白字符;

否定逆序環視,語法是(?<!...),要求左邊的字符串不能匹配指定的表達式,比如表達式(?<!\w)cat,(?<!\w)在字符c左邊,即匹配c左邊的邊界,對這個邊界的要求是,它的左邊不能是單詞字符。

可以看出,環視也使用括號(),不過,它不是分組,不占用分組編號。

繼續回到我們上面的正則表達式,第一個小括號(?<=[a-z]),這是肯定逆序環視的語法,要求匹配的字符串的左邊必須有小寫的字母。第二個小括號則是一個分組,匹配大寫的字母,注意正則中的分組編號是從1開始的,這和我們傳統編程下標一般是從0開始不同。而第一個小括號本身就是語法,其不占用分組編號,所以后面的$1,則是匹配的第二個小括號中的內容,并將其前面添加一個_符號,最后再整體將整個字符串轉換成小寫。

既然我們已經能把駝峰法轉為下劃線的樣式了,如果反過來又該怎辦呢?

2、如何在php中把下劃線樣式的字符串轉換成駝峰樣式的字符串。例:輸入是foo_bar的話,輸出則是FooBar

$str = preg_replace_callback('/_+([a-z])/',function($matches){
  print_r($matches); //Array ( [0] => _b [1] => b )
  return strtoupper($matches[1]);
},'foo_bar');
echo $str; //fooBar
echo "<br>";
$str = preg_replace_callback('/_+([a-z])/',function($matches){
  return strtoupper($matches[1]);
},'foo');
echo $str; //foo
echo "<br>";
$str = preg_replace_callback('/_+([a-z])/',function($matches){
  return strtoupper($matches[1]);
},'foo_bar_b');
echo $str; //fooBarB
echo "<br>";

這里我們用到了preg_replace_callback函數,該函數執行一個正則表達式搜索并且使用一個回調進行替換。換言之,就是第一個參數是正則表達式,第二個參數是一個匹配到結果的回調函數,第三個參數是需要匹配的字符串。注意,回調函數具體什么時候調用,是每次匹配到結果則調用,調用次數不只為一次,匹配不到則不調用。并且該回調函數的參數是匹配的結果,是完整的匹配,matches[0]是完整的匹配,matches[1]是第一個捕獲子組的匹配,以此類推。且回調函數需要把更改的結果return出去,不然則忽略捕獲的字符串

正則表達式比較簡單,這里就不具體分析了。

正則速查表 http://www.jb51.net/article/67634.htm

詳細的正則表達式語法可參考:

正則表達式30分鐘入門教程 http://www.jb51.net/tools/zhengze.html

PS:這里再為大家提供2款非常方便的正則表達式工具供大家參考使用:

JavaScript正則表達式在線測試工具:
http://tools.jb51.net/regex/javascript

正則表達式在線生成工具:
http://tools.jb51.net/regex/create_reg

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結合實例形式分析了php實現針對有序表插值查找的相關操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實現服務端分頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實現APP微信支付的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP實現的多維數組排序算法,結合實例形式對比分析了php針對多維數組及帶有鍵名的多維數組進行排序相關操作技巧與注意事項,需要的朋友可以參考下
這篇文章主要為大家詳細介紹了php結合ajaxuploadfile實現無刷新文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章給大家詳細介紹了PHP開發接口使用RSA進行加密解密方法,對此有興趣的朋友可以學習下。
主站蜘蛛池模板: 国产99久久精品一区二区永久免费 | 亚洲精久久久 | 久久精品性视频 | 亚洲精品99999 | 黑人精品欧美一区二区蜜桃 | 中文字幕一区二区三区四区 | 一级片免费视频 | 中文字幕日韩三级 | 中文字幕日韩欧美一区二区三区 | 一区二区三区视频在线免费观看 | 91精品国产综合久久精品图片 | 日本不卡一区二区三区在线观看 | 日批日韩在线观看 | 在线视频a | 91在线精品一区二区 | 在线国产一区 | 久久91| 欧美日韩在线电影 | 黄色一级在线播放 | 久久99视频精品 | 日韩靠逼 | 伊人中文网| 婷婷在线视频 | 伊人看片 | 精品乱码一区二区三四区 | 免费在线一区二区三区 | 精品国产成人 | 中文字幕亚洲一区 | 久久av综合 | 亚洲不卡av在线 | 久久精品国产免费一区二区三区 | 青青久视频| 欧美日韩在线精品 | 色就干 | 精品国产亚洲一区二区三区大结局 | 久久精品亚洲一区 | 久久精品国产一区老色匹 | 香蕉久久a毛片 | 国产精品久久福利 | 亚洲毛片在线观看 | 日韩电影免费在线观看中文字幕 |