PackageTrack
Sign in Get early access

voku/portable-ascii

Portable ASCII library - performance optimized (ascii) string functions for php.

2.1.1 461M downloads/mo #93 most downloaded on composer voku/portable-ascii

What this package is like to depend on

Last release 3 months ago

26 Apr 2026

Ships unpredictably

gaps range from 9 days to 2.7 years

Nearly every release is documented

notes for 40 of 40 stable releases

Nothing withdrawn

no release was ever pulled

7 years old

40 releases · first in 2019

2 releases in the last 12 months

see the full history below

Release timeline

40 releases · Sep 2019 to Apr 2026
2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 40
  1. 2.1.1 26 Apr 2026
    Release notes

    [*]: update the changelog

    Open source →
    Release notes
    • fix long-string ASCII::to_ascii() regression coverage to match current degree-sign handling and lock in cache-order behavior across cleanup, transliteration, and retention modes
    Open source →
  2. 2.1.0 16 Apr 2026
    Release notes

    Merge pull request #127 from voku/copilot/blind-spot-analysis-perform…

    Open source →
    Release notes
    • run all checks and tests up to PHP 8.5
    • raise the minimum PHP version from 7.0 to 7.1
    • update PHPUnit dev-dependency to support ~8.5 || ~9.6 || ~10.5 || ~11.5
    • modernize CI: add a required PHPStan job, update the GitHub Actions matrix, and refresh the AppVeyor config
    • optimize ASCII::to_ascii() / ASCII::to_transliterate() hot paths, add benchmark coverage, and document current benchmark results
    • harden invalid UTF-8 handling in clean(), to_ascii(), and to_transliterate() for malformed, overlong, surrogate, and out-of-range sequences
    • expand regression coverage for malformed UTF-8, transliteration boundaries, slug loops, and other edge cases
    Open source →
  3. 2.0.3 21 Nov 2024
    Release notes

    [*]: update the changelog

    Open source →
    Release notes
    • use modern phpdocs e.g. list<int> or conditional-return annotations
    Open source →
  4. 2.0.2 21 Nov 2024
    Release notes

    [*]: update the changelog

    Open source →
    Release notes
    • small fix for PHP 8.4 (thanks to @gilbertoalbino)
    Open source →
  5. 2.0.1 08 Mar 2022
    Release notes

    [*]: update the changelog

    Open source →
    Release notes
    • "To people of Russia": There is a war in Ukraine right now. The forces of the Russian Federation are attacking civilians.
    • optimize some phpdocs
    Open source →
  6. 2.0.0 24 Jan 2022
    Release notes

    Revert "Revert "[+]: prefer "Russian - Passport (2013), ICAO" instead…

    Open source →
    Release notes
    • prefer "Russian - Passport (2013), ICAO" instead of "Russian - GOST 7.79-2000(B)"
    • fix "Ukrainian" char-mapping (thanks to @Andr1yk0)
    • fix "Persian" char-mapping (thanks to @frost-cyber)
    Open source →
  7. 1.6.1 24 Jan 2022
    Release notes

    [*]: update the changelog

    Open source →
    Release notes
    • revert: prefer "Russian - Passport (2013), ICAO" instead of "Russian - GOST 7.79-2000(B)"
    • revert: fix "Ukrainian" char-mapping (thanks to @Andr1yk0)
    • revert: fix "Persian" char-mapping (thanks to @frost-cyber)
    Open source →
  8. 1.6.0 24 Jan 2022
    Release notes

    Merge branch 'master' of ssh://github.com/voku/portable-ascii into ma…

    Open source →
    Release notes
    • prefer "Russian - Passport (2013), ICAO" instead of "Russian - GOST 7.79-2000(B)"
    • fix "Ukrainian" char-mapping (thanks to @Andr1yk0)
    • fix "Persian" char-mapping (thanks to @frost-cyber)
    • fix "ASCII::normalize_whitespace()" -> "CARRIAGE RETURN" is more like "<br>" and no "\n"
    • add "ASCII::to_ascii_remap()" -> this method will return broken characters and is only for special cases
    Open source →
  9. 1.5.6 12 Nov 2020
    Release notes

    [+]: "ASCII::normalize_whitespace()" -> support for "VERTICAL TAB" v2.1

    Open source →
    Release notes
    • "ASCII::normalize_whitespace()" -> can now also remove "control characters" if needed v2
    Open source →
  10. 1.5.5 11 Nov 2020
    Release notes

    [*]: update the changelog

    Open source →
    Release notes
    • fix "Greeklish" char-mapping (thanks @sebdesign)
    • "ASCII::normalize_whitespace()" -> can now also remove "control characters" if needed
    Open source →
  11. 1.5.4 08 Nov 2020
    Release notes
    • add some missing replacements in U+23xx page (thanks @marcoffee)
    • fix "Russian" char-mapping (thanks @ilyahoilik)
    • running test with PHP 8.0 rc3
    Open source →
  12. 1.5.3 22 Jul 2020
    Release notes
    • fix "Georgian" char-mapping (thanks @waska14)
    Open source →
  13. 1.5.2 15 Jun 2020
    Release notes
    • add "Bengali" (bn) language support (thanks @eliyas5044)
    • fix "Portuguese" char-mapping
    • reduce the file size (removed extra comments from "avian2/unidecode")
    Open source →
  14. 1.5.1 26 May 2020
    Release notes
    • fix merge ASCII transliterations from "avian2/unidecode" (python) -> https://github.com/avian2/unidecode/
    Open source →
  15. 1.5.0 23 May 2020
    Release notes
    • merge ASCII transliterations from "avian2/unidecode" (python) -> https://github.com/avian2/unidecode/
    Open source →
  16. 1.4.11 23 May 2020
    Release notes
    • "composer.json" -> remove "autoload-dev" stuff from "autoload"
    • "voku/php-readme-helper" -> auto-generate the API documentation in the README
    Open source →
  17. 1.4.10 13 Mar 2020
    Release notes
    • ASCII::to_ascii() -> fix extra symbol handling in the regex
    • ASCII::to_ascii() -> fix for languages with multi-length-special-char (e.g. Greek -> 'ει' => 'i')
    Open source →
  18. 1.4.9 06 Mar 2020
    Release notes
    • ASCII::to_slugify() -> fix php warning from empty "separator"
    Open source →
  19. 1.4.8 06 Feb 2020
    Release notes
    • small optimization for "ASCII::to_ascii()" performance
    Open source →
  20. 1.4.7 27 Jan 2020
    Release notes
    • fix possible wrong type from "getDataIfExists()" -> e.g. a bug reported where "/data/" was modified
    • inline variables
    • do not use "=== true" for "bool"-types
    Open source →
  21. 1.4.6 23 Dec 2019
    Release notes
    • optimize "ASCII::to_ascii()" performance
    • add "armenian" chars
    • add "ASCII:getAllLanguages()"
    Open source →
  22. 1.4.5 19 Dec 2019
    Release notes
    • use "@psalm-pure" v2
    Open source →
  23. 1.4.4 19 Dec 2019
    Release notes
    • use "@psalm-pure"
    Open source →
  24. 1.4.3 18 Dec 2019
    Release notes
    • use "@psalm-immutable"
    Open source →
  25. 1.4.2 13 Dec 2019
    Release notes
    • optimize the performance v2
    • more fixes for non-ascii regex
    Open source →
  26. 1.4.1 13 Dec 2019
    Release notes
    • fix regex for non-ascii
    Open source →
  27. 1.4.0 13 Dec 2019
    Release notes
    • optimize the performance, via single char replacements
    Open source →
  28. 1.3.6 12 Dec 2019
    Release notes
    • "ascii_extras" -> convert the static content into ascii -> e.g.: instead of replacing "+" with "più" we use "piu" (Italian), because we want to use ascii anyway
    Open source →
  29. 1.3.5 11 Nov 2019
    Release notes
    • fix "ASCII::remove_invisible_characters()" -> do not remove invisible encoded url strings by default
    Open source →
  30. 1.3.4 14 Oct 2019
    Release notes
    • fix static cache for "ASCII::charsArrayWithOneLanguage"
    Open source →
  31. 1.3.3 14 Oct 2019
    Release notes
    • fix "Turkish" mapping -> 'ä' -> 'a'
    Open source →
  32. 1.3.2 14 Oct 2019
    Release notes
    • fix language parameter usage with e.g. "de_DE"
    • re-add missing "extra"-mapping chars
    Open source →
  33. 1.3.1 13 Oct 2019
    Release notes
    • fix "ASCII::to_slugify" -> remove unicode chars
    • add more test for ascii chars in the mapping
    • fix non ascii chars in the mapping
    Open source →
  34. 1.3.0 12 Oct 2019
    Release notes
    • add transliteration "fr" (was supported before, but with chars from other languages)
    • add transliteration "ru" - Passport (2013), ICAO
    • add transliteration "ru" - GOST 7.79-2000(B)
    • add transliteration "el" - greeklish
    • add transliteration "zh"
    • add transliteration "nl"
    • add transliteration "it"
    • add transliteration "mk"
    • add transliteration "pt"
    • add constants -> ASCII::*LANGUAGE_CODES
    • add more special latin chars / (currency) symbols
    • add simple tests for all supported languages
    • optimize "Russian" to ASCII (via "translit.ru")
    • optimize performance of string replacement
    • optimize performance of array merging
    • optimize phpdoc comments
    • "ASCII::to_transliterate" -> use "transliterator_create" + static cache
    • "ASCII::to_ascii" -> fix "remove unsupported chars"
    • "ASCII::to_ascii" -> add some more special chars
    • run/fix static analyse via "pslam" + "phpstan"
    • auto fix code style via "php-cs-fixer"
    • fix transliteration for "german"
    • fix transliteration for "persian" (thanks @mardep)
    • fix transliteration for "polish" (thanks @dariusz.drobisz)
    • fix transliteration for "bulgarian" (thanks @mkosturkov)
    • fix transliteration for "croatian" (thanks @ludifonovac)
    • fix transliteration for "serbian" (thanks @ludifonovac)
    • fix transliteration for "swedish" (thanks @nicholasruunu)
    • fix transliteration for "france" (thanks @sharptsa)
    • fix transliteration for "serbian" (thanks @nikolaposa)
    • fix transliteration for "czech" (thanks @slepic)
    Open source →
  35. 1.2.3 10 Sep 2019
    Release notes
    • fix language depending ASCII chars (the order matters)
    Open source →
  36. 1.2.2 10 Sep 2019
    Release notes
    • fix bulgarian ASCII chars | thanks @bgphp
    Open source →
  37. 1.2.1 07 Sep 2019
    Release notes
    • "charsArray()" -> add access to "ASCII::$ASCII_MAPS*""
    Open source →
  38. 1.2.0 06 Sep 2019
    Release notes
    • "to_slugify()" -> use the extra ascii array
    Open source →
  39. 1.1.0 06 Sep 2019
    Release notes
    • add + split extra ascii replacements
    Open source →
  40. 1.0.0 05 Sep 2019
    Release notes
    • initial commit
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive