1、如何在php中把駝峰樣式的字串轉換成下劃線樣式的字串。例:輸入是foobar的話,輸出則是foo_bar
以下是用正則的方式去完成,既然用到正則,方法肯定就不只一種,我們看下下面的方式
echo strtolower(preg_replace('/(?<=[a-z])([a-z])/', '_$1', 'foobar'));下面我們來解釋下,上面正則的意思。具體正則的基本知識,這裡篇幅有限就不具體介紹了,文章末尾會放出幾篇寫的比較好的正規表示式的文章。//output:foo_bar
echo "
";echo strtolower(preg_replace('/(?<=[a-z])([a-z])/', '_$1', 'foo'));
//output:foo
echo "
";echo strtolower(preg_replace('/(?<=[a-z])([a-z])/', '_$1', 'foobarb'));
//output:foo_bar_b
echo "
";
上面的正則裡面主要用到了正規表示式中的環視邊界匹配的語法。具體定義如下(摘抄):
環視的字面意思就是左右看看,需要左右符合一些條件,本質上,它也是匹配邊界,對邊界有一些要求,這個要求是針對左邊或右邊的字串的,根據要求不同,分為四種環視:
可以看出,環視也使用括號(),不過,它不是分組,不占用分組編號。
繼續回到我們上面的正規表示式,第乙個小括號(?<=[a-z]),這是肯定逆序環視的語法,要求匹配的字串的左邊必須有小寫的字母。第二個小括號則是乙個分組,匹配大寫的字母,注意正則中的分組編號是從1開始的,這和我們傳統程式設計下標一般是從0開始不同。而第乙個小括號本身就是語法,其不占用分組編號,所以後面的$1,則是匹配的第二個小括號中的內容,並將其前面新增乙個_符號,最後再整體將整個字串轉換成小寫。
既然我們已經能把駝峰法轉為下劃線的樣式了,如果反過來又該怎辦呢?
2、如何在php中把下劃線樣式的字串轉換成駝峰樣式的字串。例:輸入是foo_bar的話,輸出則是foobar
$str = preg_replace_callback('/_+([a-z])/',function($matches),'foo_bar');這裡我們用到了preg_replace_callback函式,該函式執行乙個正規表示式搜尋並且使用乙個**進行替換。換言之,就是第乙個引數是正規表示式,第二個引數是乙個匹配到結果的**函式,第三個引數是需要匹配的字串。注意,**函式具體什麼時候呼叫,是每次匹配到結果則呼叫,呼叫次數不只為一次,匹配不到則不呼叫。並且該**函式的引數是匹配的結果,$matches[0]是完整的匹配,$matches[1]是第乙個捕獲子組的匹配,以此類推。且**函式需要把更改的結果return出去,不然則忽略捕獲的字串echo $str; //foobar
echo "
";$str = preg_replace_callback('/_+([a-z])/',function($matches),'foo');
echo $str; //foo
echo "
";$str = preg_replace_callback('/_+([a-z])/',function($matches),'foo_bar_b');
echo $str; //foobarb
echo "
";
正規表示式比較簡單,這裡就不具體分析了。
正則速查表
下面,我們用**的形式簡要彙總下正規表示式的語法。
正規表示式30分鐘入門教程
電腦程式的思維邏輯 (88) - 正規表示式 (上)
把字串轉換成整數
題目 輸入乙個表示整數的字串,把該字串轉換成整數並輸出。例如輸入字串 345 則輸出整數345 分析 這道題儘管不是很難,學過c c 語言一般都能實現基本功能,但不同程式設計師就這道題寫出的 有很大區別,可以說這道題能夠很好地反應出程式設計師的思維和程式設計習慣,因此已經被包括微軟在內的多家公司用作...
把字串轉換成整數
題目 輸入乙個表示整數的字串,把該字串轉換成整數並輸出。例如輸入字串 345 則輸出整數 345。分析 這道題儘管不是很難,學過c c 語言一般都能實現基本功能,但不同程式設計師就這道題寫出的 有很大區別,可以說這道題能夠很好地反應出程式設計師的思維和程式設計習慣,因此已經被包括微軟在內的多家公司用...
把字串轉換成整數
題目 輸入乙個表示整數的字串,把該字串轉換成整數並輸出。例如輸入字串 345 則輸出整數 345。分析 這道題儘管不是很難,學過 c c 語言一般都能實現基本功能,但不同程式設計師就這道題寫出的 有很大區別,可以說這道題能夠很好地反應出程式設計師的思維和程式設計習慣,因此已經被包括微軟在內的多家公司...