PascalCase を snake_case に変換するにはどうすればいいですか? 質問する

PascalCase を snake_case に変換するにはどうすればいいですか? 質問する

もしわたしが持っていたら:

$string = "PascalCase";

私は欲しい

"pascal_case"

PHP はこの目的のための関数を提供していますか?

ベストアンサー1

より短い解決策:編集者の正規表現を簡略化し、「末尾のアンダースコア」問題を修正したもの:

$output = strtolower(preg_replace('/(?<!^)[A-Z]/', '_$0', $input));

PHPデモ|正規表現デモ


のようなケースは、上記のソリューションを使用しSimpleXMLて に変換されることに注意してください。これは、アルゴリズムのバグではなく、キャメルケース表記の誤った使用法(正しいのは )と考えることもできます。このようなケースは常に曖昧であるためです。大文字を 1 つの文字列にグループ化しても()、このようなアルゴリズムは、 や略語の近くにある 1 文字の単語など、他のエッジ ケースでは常に失敗します。(かなりまれな)エッジ ケースを気にせず、正しく処理したい場合は、もう少し複雑なソリューションを使用できます。simple_x_m_lSimpleXmlsimple_xmlXMLHTMLConverterSimpleXML

$output = ltrim(strtolower(preg_replace('/[A-Z]([A-Z](?![a-z]))*/', '_$0', $input)), '_');

PHPデモ|正規表現デモ

おすすめ記事