Использование preg_replace() для преобразования буквенно-цифровых строк из верблюжьего регистра в регистр кебабаPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Использование preg_replace() для преобразования буквенно-цифровых строк из верблюжьего регистра в регистр кебаба

Сообщение Anonymous »

Теперь у меня есть метод, который преобразует мои строки CamelCase в kebab-Case, но он разбит на три вызова preg_replace():

Код: Выделить всё

public function camelToKebab($string, $us = "-")
{
// insert hyphen between any letter and the beginning of a numeric chain
$string = preg_replace('/([a-z]+)([0-9]+)/i', '$1'.$us.'$2', $string);
// insert hyphen between any lower-to-upper-case letter chain
$string = preg_replace('/([a-z]+)([A-Z]+)/', '$1'.$us.'$2', $string);
// insert hyphen between the end of a numeric chain and the beginning of an alpha chain
$string = preg_replace('/([0-9]+)([a-z]+)/i', '$1' . $us . '$2', $string);

// Lowercase
$string = strtolower($string);

return $string;
}
Я написал тесты для проверки его точности, и он правильно работает со следующим массивом входных данных (

Код: Выделить всё

array('input' => 'output')
):

Код: Выделить всё

$test_values = [
'foo'       => 'foo',
'fooBar'    => 'foo-bar',
'foo123'    => 'foo-123',
'123Foo'    => '123-foo',
'fooBar123' => 'foo-bar-123',
'foo123Bar' => 'foo-123-bar',
'123FooBar' => '123-foo-bar',
];
Мне интересно, есть ли способ сократить мои вызовы preg_replace() до одной строки, которая даст мне тот же результат. Есть идеи?
ПРИМЕЧАНИЕ. Ссылаясь на этот пост, мои исследования показали мне регулярное выражение preg_replace(), которое дает мне почти желаемый результат. , за исключением того, что в примере с foo123 не работает преобразование его в foo-123.

Подробнее здесь: https://stackoverflow.com/questions/405 ... -kebab-cas
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»