Fix #19204: Support numbers in Inflector::camel2words

This commit is contained in:
Long TRAN
2022-02-03 21:23:47 +07:00
committed by GitHub
parent 9965b8f0a4
commit cf1600411c
3 changed files with 5 additions and 1 deletions

View File

@ -11,6 +11,7 @@ Yii Framework 2 Change Log
- Enh #19171: Added `$pagination` and `$sort` to `\yii\rest\IndexAction` for easy configuration (rhertogh)
- Bug #19187: Fix `yii\filters\PageCache` to store original headers names instead of normalized ones (bizley)
- Bug #19191: Change `\Exception` to `\Throwable` in `BadRequestHttpException` and `HttpException` (Dmitrijlin)
- Bug #19204: Support numbers in Inflector::camel2words (longthanhtran)
2.0.44 December 30, 2021

View File

@ -373,7 +373,7 @@ class BaseInflector
{
// Add a space before any uppercase letter preceded by a lowercase letter (xY => x Y)
// and any uppercase letter preceded by an uppercase letter and followed by a lowercase letter (XYz => X Yz)
$label = preg_replace('/(?<=\p{Ll})\p{Lu}|(?<=\p{L})\p{Lu}(?=\p{Ll})/u', ' \0', $name);
$label = preg_replace('/(?<=\p{Ll})\p{Lu}|(?<=[\p{L}\d])\p{Lu}(?=\p{Ll})|(\d+)/u', ' \0', $name);
$label = mb_strtolower(trim(str_replace(['-', '_', '.'], ' ', $label)), self::encoding());

View File

@ -121,6 +121,9 @@ class InflectorTest extends TestCase
$this->assertEquals('Foo Bar', Inflector::camel2words('foo BAR'));
$this->assertEquals('Foo Bar', Inflector::camel2words('Foo Bar'));
$this->assertEquals('Foo Bar', Inflector::camel2words('FOO BAR'));
$this->assertEquals('Order 4 Other Phones', Inflector::camel2words('Order4OtherPhones'));
$this->assertEquals('I Have 23 Dogs', Inflector::camel2words('IHave23Dogs'));
$this->assertEquals('Con Chó Cười 34 Lần', Inflector::camel2words('ConChóCười34Lần'));
}
public function testCamel2id()