もしわたしが持っていたら:
$string = "PascalCase";
私は欲しい
"pascal_case"
PHP はこの目的のための関数を提供していますか?
ベストアンサー1
より短い解決策:編集者の正規表現を簡略化し、「末尾のアンダースコア」問題を修正したもの:
$output = strtolower(preg_replace('/(?<!^)[A-Z]/', '_$0', $input));
のようなケースは、上記のソリューションを使用しSimpleXML
て に変換されることに注意してください。これは、アルゴリズムのバグではなく、キャメルケース表記の誤った使用法(正しいのは )と考えることもできます。このようなケースは常に曖昧であるためです。大文字を 1 つの文字列にグループ化しても()、このようなアルゴリズムは、 や略語の近くにある 1 文字の単語など、他のエッジ ケースでは常に失敗します。(かなりまれな)エッジ ケースを気にせず、正しく処理したい場合は、もう少し複雑なソリューションを使用できます。simple_x_m_l
SimpleXml
simple_xml
XMLHTMLConverter
SimpleXML
$output = ltrim(strtolower(preg_replace('/[A-Z]([A-Z](?![a-z]))*/', '_$0', $input)), '_');