{"id":15652142,"url":"https://github.com/lstrojny/uffff","last_synced_at":"2025-06-22T22:34:56.110Z","repository":{"id":143286189,"uuid":"614252614","full_name":"lstrojny/uffff","owner":"lstrojny","description":"Unicode input processing made trivial","archived":false,"fork":false,"pushed_at":"2024-08-21T18:43:39.000Z","size":637,"stargazers_count":20,"open_issues_count":25,"forks_count":1,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-04-13T18:49:19.249Z","etag":null,"topics":["php","security","text","unicode"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lstrojny.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-15T08:00:53.000Z","updated_at":"2024-09-12T14:15:35.000Z","dependencies_parsed_at":"2024-01-05T20:22:47.955Z","dependency_job_id":"d96d5293-8655-4629-b800-145ec0b7e933","html_url":"https://github.com/lstrojny/uffff","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/lstrojny/uffff","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lstrojny%2Fuffff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lstrojny%2Fuffff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lstrojny%2Fuffff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lstrojny%2Fuffff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lstrojny","download_url":"https://codeload.github.com/lstrojny/uffff/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lstrojny%2Fuffff/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261379956,"owners_count":23149930,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["php","security","text","unicode"],"created_at":"2024-10-03T12:41:28.334Z","updated_at":"2025-06-22T22:34:51.092Z","avatar_url":"https://github.com/lstrojny.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Uffff - _Unicode input processing made trivial_!\n\n[![CI](https://github.com/lstrojny/uffff/actions/workflows/ci.yml/badge.svg)](https://github.com/lstrojny/uffff/actions/workflows/ci.yml) [![Documentation Status](https://readthedocs.org/projects/uffff/badge/?version=latest)](https://uffff.readthedocs.io/en/latest/?badge=latest)\n\nProperly processing unicode user input is surprisingly tricky:\n\n-   Ensuring bidirectional markers are balanced properly\n-   Trimming whitespaces and handling esoteric unicode whitespaces well\n-   Normalizing unicode equivalent characters to a well-known form\n-   Harmonizing newlines to a single format\n-   … and more\n\nWith **Uffff** the problem is reduced to:\n\n```php\n$good = Uffff\\unicode($bad);\n```\n\n[Read the docs](https://uffff.readthedocs.io/) to learn more.\n\n## Development\n\n### Setting up the environment\n\n_Uffff_ uses [direnv](https://direnv.net/) to set up the development environment. Run `direnv allow` to initialize the\ndevelopment environment.\n\nTo switch to a different PHP version for development or if you prefer not to use direnv, you can use `nix develop` to\ninitialize the environment:\n\n-   `nix develop github:loophp/nix-shell#env-php82 --impure` to select PHP 8.2\n-   `nix develop github:loophp/nix-shell#env-php83 --impure` to select PHP 8.3\n-   `nix develop github:loophp/nix-sphinx` to set up sphinx to build documentation\n\n### Making changes\n\nChange the code and then run `composer check` to run tests, static inspection, everything and the kitchen sink. Once\nthat succeeds, open a pull request.\n\nEdit the documentation in `docs/` and run `composer docs` to build the documentation. Open `build/docs/html/index.html`\nin a browser to view the HTML version.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flstrojny%2Fuffff","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flstrojny%2Fuffff","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flstrojny%2Fuffff/lists"}