回答
這可以容易地使用正則表達式來實現:
$result = preg_replace('/\B([A-Z])/', '_$1', $subject);
正則表達式的簡要說明:
- \ b在字邊界斷言位置。
- [A-Z]匹配從A-Z任何大寫字符。
- ()包裹匹配在後面參考數字1
然後我們替換「_ $ 1」,這意味着與[下劃線+引用1]
哇,這些的哪一個是快? – Alex 2011-06-03 12:31:07
您可能只能通過對您的解決方案進行基準測試來判斷哪一個更快。差別可能會很小。隨着正則表達式變得越來越複雜,操作變得越來越慢。 – 2011-06-03 12:35:20
這其中避免了先行和查找背後的斷言,這在我看來這使得它能更快。它也更具可讀性。只是表示在非字邊界之後的大寫字母之前插入下劃線。 – 2011-06-03 12:36:12
$s1 = "ThisIsATest";
$s2 = preg_replace("/(?<=[a-zA-Z])(?=[A-Z])/", "_", $s1);
echo $s2; // "This_Is_A_Test"
說明:
正則表達式使用兩個環視斷言(一個向後看,一個前瞻)尋找到一個下劃線應該插入的字符串的斑點。
(?<=[a-zA-Z]) # a position that is preceded by an ASCII letter
(?=[A-Z]) # a position that is followed by an uppercase ASCII letter
的第一個斷言確保沒有下劃線插在字符串的開始。
最簡單到方式更換匹配這是否與正則表達式替換。
例如:
substr(preg_replace('/([A-Z])/', '_$1', 'SomeText'),1);
的SUBSTR調用有去除領先 '_'
<?php
$string = "SomeTestString";
$list = split(",",substr(preg_replace("/([A-Z])/",',\\1',$string),1));
$text = "";
foreach ($list as $value) {
$text .= $value."_";
}
echo substr($text,0,-1); // remove the extra "_" at the end of the string
?>
$result = strtolower(preg_replace('/(.)([A-Z])/', '$1_$2', $subject));
轉換:
HelloKittyOlolo
Declaration
CrabCoreForefer
TestTest
testTest
爲:
hello_kitty_ololo
declaration
crab_core_forefer
test_test
test_test
- 1. 預先在字符串中加下劃線的大寫字母
- 2. 下劃線到駝峯大小寫,排除大寫下劃線
- 3. 如何用下劃線替換大寫字母?
- 4. 首字母大寫,下劃線和回用Objective-C
- 5. 忽略下劃線字母
- 6. 將所有下劃線連接的字母轉換爲大寫php
- 7. 如何在Java字符串中的每個大寫字母之前添加下劃線?
- 8. 加下劃線的前n個字符
- 9. php大寫字母大寫字
- 10. PHP preg_replace()只留下大寫字母
- 11. Modrewrite允許數字,字母,下劃線
- 12. 正則表達式字母,數字,短劃線和下劃線
- 13. 按鈕中的下劃線字母
- 14. 動態帶下劃線的字母
- 15. 更換兩個大寫字母之間的空格用下劃線
- 16. 小寫字母和下劃線連接的函數
- 17. 如何將空格更改爲下劃線和小寫字母?
- 18. 加下劃線的文字
- 19. 如何在HTML和CSS中給字母組加下劃線
- 20. php查詢(小寫字母/大寫字母)驗證
- 21. 排序字符串在C中的小寫字母前加大寫字母字母排序
- 22. 在大寫字母前插入空格
- 23. XSLT - 添加空間小寫字母后面的大寫字母
- 24. 大寫字母,小寫字母,大寫的Ant屬性
- 25. IE7縮寫下劃線
- 26. 用大寫字母
- 27. php mb_convert_case()保留大寫字母
- 28. PHP:列出首字母大寫?
- 29. PHP由大寫字母分解?
- 30. 在PHP中以大寫字母拆分?
爲什麼聖誕節標籤? :) – Yeroon 2011-06-03 12:27:48
我的錯,對不起..但它現在已經 – Alex 2011-06-03 12:35:00
*(相關)* [爆炸-uppercasedcamelcase到大寫的 - 駝峯式的PHP(http://stackoverflow.com/questions/3275837 /爆炸-uppercasedcamelcase到大寫的駝的病例中,PHP) – edorian 2011-06-03 12:42:18