使用PHP怎么將駝峰樣式的字符串轉(zhuǎn)換成下劃線樣式的字符串-創(chuàng)新互聯(lián)

這篇文章主要介紹了使用PHP怎么將駝峰樣式的字符串轉(zhuǎn)換成下劃線樣式的字符串,創(chuàng)新互聯(lián)網(wǎng)站建設公司,小編覺得不錯,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨創(chuàng)新互聯(lián)網(wǎng)站建設公司,小編來看看吧!

創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網(wǎng)站建設、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的惠城網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!

php有什么用

php是一個嵌套的縮寫名稱,是英文超級文本預處理語言,它的語法混合了C、Java、Perl以及php自創(chuàng)新的語法,主要用來做網(wǎng)站開發(fā),許多小型網(wǎng)站都用php開發(fā),因為php是開源的,從而使得php經(jīng)久不衰。

1、如何在php中把駝峰樣式的字符串轉(zhuǎn)換成下劃線樣式的字符串。例:輸入是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>";

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

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

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

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

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

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

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

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

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

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

2、如何在php中把下劃線樣式的字符串轉(zhuǎn)換成駝峰樣式的字符串。例:輸入是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函數(shù),該函數(shù)執(zhí)行一個正則表達式搜索并且使用一個回調(diào)進行替換。換言之,就是第一個參數(shù)是正則表達式,第二個參數(shù)是一個匹配到結(jié)果的回調(diào)函數(shù),第三個參數(shù)是需要匹配的字符串。注意,回調(diào)函數(shù)具體什么時候調(diào)用,是每次匹配到結(jié)果則調(diào)用,調(diào)用次數(shù)不只為一次,匹配不到則不調(diào)用。并且該回調(diào)函數(shù)的參數(shù)是匹配的結(jié)果,是完整的匹配,matches[0]是完整的匹配,matches[1]是第一個捕獲子組的匹配,以此類推。且回調(diào)函數(shù)需要把更改的結(jié)果return出去,不然則忽略捕獲的字符串

以上就是創(chuàng)新互聯(lián)網(wǎng)站建設公司,小編為大家收集整理的使用PHP怎么將駝峰樣式的字符串轉(zhuǎn)換成下劃線樣式的字符串,如何覺得創(chuàng)新互聯(lián)建站的內(nèi)容還不錯,歡迎將創(chuàng)新互聯(lián)建站推薦給身邊好友。

當前題目:使用PHP怎么將駝峰樣式的字符串轉(zhuǎn)換成下劃線樣式的字符串-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://muchs.cn/article26/csjgjg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供建站公司企業(yè)建站、微信小程序、手機網(wǎng)站建設網(wǎng)站排名、微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計