にゃあ

PHPでpascal case, camel case, snake caseを変換する関数

最近、パスカルケース・キャメルケース・スネークケースという言葉を知ったのでまとめておきます。言語学の記事じゃないですよ!

パスカルケース(pascal case)

パスカルケースとは、単語の1文字目が大文字で表現した文字列のことです。例えば、PlayStation、MacBook、MacDonald。

キャメルケース(camel case)

キャメルケースとは、パスカルケースと似ていますが、文字列の最初が小文字になります。例えば、iPhone、iTunes、eBay。パスカルケースを含めてキャメルケースと呼ぶこともあるけど、ここでは区別します。

スネークケース(snake case)

スネークケースとは、単語境界をアンダースコア(_)でつないだも文字列です。例えば、file_get_contents、var_dump、。蛇の入れ物じゃないよ。

で、何がしたいかというと…

こんなことがしたかったので、変換用の関数を作ってみました。

  • snake_caseのテーブル名 → PascalCaseのモデルクラスを作りたい
  • snake_caseのURL → PascalCaseのコントローラクラスを作りたい
  • snake_caseのURL → camelCaseのアクションメソッドを作りたい
function pascalize($string)
{
	$string = strtolower($string);
	$string = str_replace('_', ' ', $string);
	$string = ucwords($string);
	$string = str_replace(' ', '', $string);
	return $string;
}

function camelize($string)
{
	$string = pascalize($string);
	$string[0] = strtolower($string[0]);
	return $string;
}

function snake_case($string)
{
	$string = preg_replace('/([A-Z])/', '_$1', $string);
	$string = strtolower($string);
	return ltrim($string, '_');
}

$strings = array(
	'snake_case_string',
	'SNAKE_CASE_STRING_UPPER',
	'camelCaseString',
	'PascalCaseString',
);

foreach ( $strings as $string )
{
	echo 'pascalized:  ';
	echo pascalize($string)."\n";

	echo 'camelized:   ';
	echo camelize($string)."\n";

	echo 'snake-cased: ';
	echo snake_case($string)."\n";
	
	echo "------\n";
}

実行結果

pascalized:  SnakeCaseString
camelized:   snakeCaseString
snake-cased: snake_case_string
------
pascalized:  SnakeCaseStringUpper
camelized:   snakeCaseStringUpper
snake-cased: s_n_a_k_e__c_a_s_e__s_t_r_i_n_g__u_p_p_e_r
------
pascalized:  Camelcasestring
camelized:   camelcasestring
snake-cased: camel_case_string
------
pascalized:  Pascalcasestring
camelized:   pascalcasestring
snake-cased: pascal_case_string
------

コメント&トラバ

トラックバックを送る

無関係なスパムのトラックバックを防止するため、リンク先で本サイト(suin.asia)への言及が確認されないトラックバックは破棄しています。

トラバURL : http://suin.asia/trackback/478

コメントを書く

お名前* URL
本文*
合い言葉* ←「fe31diosou」と入力して下さい。
* この記事の話題と関係ないコメントはどんな内容でも削除します。(移動できないので)

トラックバック

トラックバックがないのはさみしいにゃん…。

コメント

コメントはないです。誰かコメント書いてよぅ…。

Author

Submenu

Recent Entries

XOOPS Cube Dev Ring

氷川 XOOPS Module 開発室

Recent Comments

Recent Trackbacks