- "To people of Russia": There is a war in Ukraine right now. The forces of the Russian Federation are attacking civilians.
- use optimized phpdocs for phpstan
- update vendor (ASCII)
- optimize phpdoc for "titleize"
- add "extractIntegers()"
- add "extractSpecialCharacters()"
- add more tests
- fixed some "mixed" phpdocs
- fix PHP 8.1 compatibility v2 -> thanks @boboldehampsink
- fix PHP 8.1 compatibility -> thanks @boboldehampsink
- update vendor (UTF-8)
- use Github Actions
- use optimized phpdocs for phpstan
- use phpdocs (generics) for collections
- add "isAscii()"
- add "isBinary()"
- add "isBom()"
- add "isBinary()"
- add "isUrl()"
- add "isUtf8()"
- add "isUtf16()"
- add "isUtf32()"
- update vendor (ASCII)
- add "callUserFunction()"
- update vendor lib "voku/arrayy"
- move code examples into the code
- use "voku/simple-php-code-parser" for building the "README"
- fix "isEqualsCaseInsensitive()" -> thanks to psalm
- update vendor lib "voku/arrayy"
- update vendor lib "voku/arrayy"
- add "newLineToHtmlBreak()"
- update vendor lib "voku/arrayy" (support for generics via phpstan & psalm)
- use "@psalm-mutation-free"
- update vendor (ASCII)
- update vendor (Arrayy)
- use CollectionStringy() (optional)
- add "nth()"
- add "isSimilar()"
- add "similarity()"
- add "isWhitespace()"
- add "wrap()"
- add "words()"
- add "format()"
- add "chunk()"
- add "isNotEmpty()"
- add "isEquals()"
- add "softWrap()"
- add "hardWrap()"
- add "before()"
- add "after()"
- add "crypt()"
- add "bcrypt()"
- add "encrypt()"
- add "decrypt()"
- add "setInternalEncoding()"
- add "encode()"
- add "isNumeric()"
- add "studlyCase()" (pascalCase)
- add "snakeCase()"
- add "kebabCase()"
- add "appendStringy()"
- add "prependStringy()"
- add "urlEncodeRaw()"
- add "urlEncode()"
- add "urlDecodeRaw()" / "urlDecodeRawMulti()"
- add "urlDecode()" / "urlDecodeMulti()"
- update "Arrayy" (collection lib)
- fix errors reported by psalm
- update "Portable ASCII" from v1.2 -> v1.3
- breaking-change: we always use language "en" instead of "de" as default
- breaking-change: "urlify()" has changed parameter order ($strToLower was replaced with $replacements)
- update "slugify" -> use the Portable ASCII lib
- extend "titleize" -> allow to specify what a word is
- extend "slugify" -> allow to specify replacements in the string
- optimize the regex for unicode strings
- add CollectionStringy - StaticStringy::collection()
- "Implemented JsonSerializable" | thanks @ifcanduela
- "fix for the Greek letter Theta" | thanks @nikosv
- fix regex for php 7.3
- fix issues reported by phpstan (level 7)
- update vendor (better unicode support for regex stuff)
- inline some simple functions
- update vendor
- rename "slugify()" into "urlify()"
- re-add original "slugify()" method
- rename "toAscii()" into "toTransliterate()"
- re-add toAscii "slugify()" method
- apply php-cs fixes rules
- fix error from "UTF8::remove_html()" with strict types
- fix "replaceFirst()" + "replaceLast()"
- add "replaceFirst()" + "replaceLast()"
- optimize the performance of almost all methods
- set default encoding to UTF-8 (for static method calls) v2
- set default encoding to UTF-8 (for static method calls)
-> THX @ Xdebug + KCachegrind
- add Stringy->titleizeForHumans() | thx @HipsterJazzbo
- update "Portable UTF8" from v4 -> v5
-> this is a breaking change without API-changes - but the requirement from "Portable UTF8" has been changed (it no longer requires all polyfills from Symfony)
- drop support for PHP < 7.0
- use "strict_types"
- use Portable UTF-8 functions
- Added simplified StaticStringy class
- str in Stringy::create and constructor is now optional
- Removed StaticStringy class
- Added append, prepend, toBoolean, repeat, between, slice, split, and lines
- camelize/upperCamelize now strip leading dashes and underscores
- titleize converts to lowercase, thus no longer preserving acronyms
- Added trimLeft, trimRight
- Added support for unicode whitespace to trim
- Added delimit
- Added indexOf and indexOfLast
- Added htmlEncode and htmlDecode
- Added "Ç" in toAscii()
- Added hasUpperCase and hasLowerCase
- Added $removeUnsupported parameter to toAscii()
- Improved toAscii support with additional Unicode spaces, Vietnamese chars, and numerous other characters
- Separated the charsArray from toAscii as a protected method that may be extended by inheriting classes
- Chars array is cached for better performance
- Optimized chars()
- Added "ä Ä Ö Ü"" in toAscii()
- Added support for Unicode spaces in toAscii()
- Replaced instances of self::create() with static::create()
- Added missing test cases for safeTruncate() and longestCommonSuffix()
- Updated Stringy\create() to avoid collision when it already exists
- Listed ext-mbstring in composer.json
- Added Stringy\create function for PHP 5.6
- Added containsAll and containsAny
- Light cleanup
- Added toTitleCase
- Announced support for HHVM
- Fixed toAscii() failing to remove remaining non-ascii characters
- Updated slugify() to treat dash and underscore as delimiters by default
- Updated slugify() to remove leading and trailing delimiter, if present
- Made both str and encoding protected, giving property access to subclasses
- Added getEncoding()
- Fixed isJSON() giving false negatives
- Cleaned up and simplified: replace(), collapseWhitespace(), underscored(), dasherize(), pad(), padLeft(), padRight() and padBoth()
- Fixed handling consecutive invalid chars in slugify()
- Removed conflicting hard sign transliteration in toAscii()
- Implemented the IteratorAggregate interface, added chars()
- Renamed count() to countSubstr()
- Updated count() to implement Countable interface
- Implemented the ArrayAccess interface with positive and negative indices
- Switched from PSR-0 to PSR-4 autoloading
- Additional Bulgarian support for toAscii
- str property made private
- Constructor casts first argument to string
- Constructor throws an InvalidArgumentException when given an array
- Constructor throws an InvalidArgumentException when given an object without a __toString method
- Updated create function to use late static binding
- Added optional $replacement param to slugify
- Cleaned up tests
- Added homepage to composer.json
- Fixed pad's use of InvalidArgumentException
- Fixed replace(). It now correctly treats regex special chars as normal chars
- Added additional Cyrillic letters to toAscii
- Added $caseSensitive to contains() and count()
- Added toLowerCase()
- Added toUpperCase()
- Added regexReplace()
- Fix for collapseWhitespace()
- Added isHexadecimal()
- Added constructor to Stringy\Stringy
- Added isSerialized()
- Added isJson()
- 1.0.0 release
- Added test coverage for Stringy::create and method chaining
- Added tests for returned type
- Fixed StaticStringy::replace(). It was returning a Stringy object instead of string
- Renamed standardize() to the more appropriate toAscii()
- Cleaned up comments and README
- Release candidate