PHP Classes

PHP Case Convert: Convert strings between many naming conventions

Recommend this page to a friend!
     
  Info   Example   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not enough user ratingsTotal: 102 All time: 9,786 This week: 206Up
Version License PHP version Categories
case-converter 1.0Custom (specified...5PHP 5, Text processing
Description 

Author

This package can be used to convert strings between many naming conventions.

It provides a base class for performing the conversion of the case of words used in a string. Then it provides several sub-classes that can perform the actual case conversion. Currently it provides sub-classes for converting strings using the following naming conventions:

- Snake case
- Camel case
- Kebab case
- Pascal case
- Ada case
- Train case
- Cobol case
- Macro case
- Upper case
- Lower case
- Title case
- Sentence case
- Dot notation

Innovation Award
PHP Programming Innovation award nominee
November 2019
Number 10
Sometimes applications need to change the case conventions of words of a given text strings. There are many conventions to define the case of words.

This package implements string word case conversion with support to 13 well-known case conventions.

Manuel Lemos
Picture of jawira
  Performance   Level  
Innovation award
Innovation award
Nominee: 9x

Winner: 2x

 

Example

Examples

To use Case Converter you have to instantiate Convert class, then you should call to*() methods.

Basic usage

Code:

<?php declare(strict_types=1);

require __DIR__ . '/vendor/autoload.php';

use Jawira\CaseConverter\Convert;

$robot = new Convert('The-Terminator');

echo $robot->toPascal() . PHP_EOL;
echo $robot->toCobol() . PHP_EOL;
echo $robot->toSnake() . PHP_EOL;

Output:

TheTerminator
THE-TERMINATOR
the_terminator

Explicit case detection

In some edge cases you have to explicitly set the format of input string to have the desired output:

<?php declare(strict_types=1);

require __DIR__ . '/vendor/autoload.php';

use Jawira\CaseConverter\Convert;

$agency = new Convert('FBI');

$agency->fromAda();
echo $agency->toCobol();   // output: FBI
echo $agency->toSnake();   // output: fbi

$agency->fromCamel();
echo $agency->toCobol();   // output: F-B-I
echo $agency->toSnake();   // output: f_b_i

$agency->fromAuto();
echo $agency->toCobol();   // output: FBI
echo $agency->toSnake();   // output: fbi

Force _Simple Case-Mapping_

You can still use _Simple Case-Mapping_ even if you are using PHP 7.3 or newer:

<?php declare(strict_types=1);

require __DIR__ . '/vendor/autoload.php';

use Jawira\CaseConverter\Convert;

$robot = new Convert('Straße');

$robot->forceSimpleCaseMapping();
echo $robot->toMacro();     // output: STRAßE

[Learn more about Case-Mapping][Case-Mapping].

Using the factory

[CaseConverter factory] is going to instantiate Convert class for you. Everything else is the same:

// Convert string to Pascal case
$this->cc->convert('XML')->toPascal();                      // Xml

// Convert string to Snake case
$this->cc->convert('v3.0.2')->toSnake();                  // v3_0_2

// Convert string to Camel case
$this->cc->convert('first-name')->toCamel();              // firstName

// Convert from Lower case to Dot case
$this->cc->convert('non-SI units')->fromLower()->toDot(); // non-si.units

// Get detected words
$this->cc->convert('Mario Bros')->toArray();              // ['Mario', 'Bros']

// Retrieve original string
$this->cc->convert('use_the_force')->getSource();         // use_the_force

[Case-Mapping]: ./case-mapping.md [CaseConverter factory]: ./using-the-factory.md


Details

Case converter

Use this library to convert string between:

| Name | Method | Output example | | ------------- | --------------- | ----------------- | | ? Camel case | toCamel() | myNameIsBond | | ??? Pascal case | toPascal() | MyNameIsBond | | ? Snake case | toSnake() | my_name_is_bond | | ??? Ada case | toAda() | My_Name_Is_Bond | | ?? Macro case | toMacro() | MY_NAME_IS_BOND | | ? Kebab case | toKebab() | my-name-is-bond | | ? Train case | toTrain() | My-Name-Is-Bond | | ? Cobol case | toCobol() | MY-NAME-IS-BOND | | ? Lower case | toLower() | my name is bond | | ? Upper case | toUpper() | MY NAME IS BOND | | ? Title case | toTitle() | My Name Is Bond | | ?? Sentence case | toSentence() | My name is bond | | ?? Dot notation | toDot() | my.name.is.bond |

Features:

  • ? [automatic case detection][detection algorithm]
  • ? [factory][]
  • ? i18n

Latest Stable Version PHP from Packagist Build Status Maintainability Test Coverage Total Downloads Monthly Downloads Daily Downloads PHPPackages Rank PHPPackages Referenced By Average time to resolve an issue Percentage of issues still open License composer.lock PDS Skeleton Issues

Usage

Input string (i.e. _john-connor_) format is going to be [detected automatically][detection algorithm]. Here's an example:

use Jawira\CaseConverter\Convert;

$hero = new Convert('john-connor');

echo $hero->toCamel();   // output: johnConnor

Of course you can explicitly set the format of input string:

echo $hero->fromKebab()->toSnake();   // output: john_connor

You can also use the [provided factory][factory] to instantiate Convert class. A list of [all public methods] is also available.

i18n

Fully compatible with non-english alphabets:

// Spanish
$esp = new Convert('DON_RAMÓN_Y_ÑOÑO');
echo $esp->toCamel();   // output: donRamónYÑoño

// Greek
$grc = new Convert('????-????');
echo $grc->toCamel();   // output: ????????

// Russian
$rus = new Convert('?????_???????');
echo $rus->toCamel();   // output: ????????????

case-converter is compatible with _Simple Case-Mapping_ and _Full Case-Mapping_. [Learn more about Case-Mapping][Case-Mapping].

Installation

$ composer require jawira/case-converter

Documentation

<https://jawira.github.io/case-converter/>

Contributing

If you liked this project, ? star it on [GitHub].

License

This library is licensed under the [MIT LICENSE].

<!--mkdocs: Do not use relative path for links and images-->

[all public methods]: https://jawira.github.io/case-converter/api.html [CONTRIBUTING.md]: https://jawira.github.io/case-converter/contributing.html [Countable interface]: https://php.net/manual/en/class.countable.php [Case-Mapping]: https://jawira.github.io/case-converter/case-mapping.html [magic method]: https://www.php.net/manual/en/language.oop5.magic.php#object.tostring [MIT LICENSE]: https://jawira.github.io/case-converter/license.html [open an issue]: https://github.com/jawira/case-converter/issues/new [detection algorithm]: https://jawira.github.io/case-converter/detection-algorithm.html [factory]: https://jawira.github.io/case-converter/using-the-factory.html [GitHub]: https://github.com/jawira/case-converter/

*

Packages from jawira

<dl>

<dt><a href="https://packagist.org/packages/jawira/emoji-catalog">jawira/emoji-catalog</a> (library)</dt> <dd>Get access to +3000 emojis as class constants.</dd>

<dt><a href="https://packagist.org/packages/jawira/phing-visualizer">jawira/phing-visualizer</a> (library)</dt> <dd>Graphical representation of Phing's buildfile.</dd>

<dt><a href="https://packagist.org/packages/jawira/phing-open-task">jawira/phing-open-task</a> (library)</dt> <dd>Phing task to open files, directories, and URLs with your favorite software.</dd>

<dt><a href="https://packagist.org/packages/jawira/">more...</a></dt> </dl>


  Files folder image Files (81)  
File Role Description
Files folder image.idea (1 file, 1 directory)
Files folder imageconfig (2 files)
Files folder imagedocs (8 files, 1 directory)
Files folder imagesrc (4 files, 2 directories)
Files folder imagetests (2 directories)
Accessible without login Plain text file .codeclimate.yml Data Auxiliary data
Accessible without login Plain text file .editorconfig Data Auxiliary data
Accessible without login Plain text file .travis.yml Data Auxiliary data
Accessible without login Plain text file build.xml Data Auxiliary data
Accessible without login Plain text file CHANGELOG.md Data Auxiliary data
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file CONTRIBUTING.md Data Auxiliary data
Accessible without login Plain text file LICENSE.md Lic. License text
Accessible without login Plain text file mkdocs.yml Data Auxiliary data
Accessible without login Plain text file phive.xml Data Auxiliary data
Accessible without login Plain text file README.md Doc. Documentation

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 100%
Total:102
This week:0
All time:9,786
This week:206Up