# ElixirPhpEmailValidator v1.0.0 - Table of Contents

> A bug-for-bug compatible port of PHP's filter_var($email, FILTER_VALIDATE_EMAIL). Returns the exact same true/false verdict as PHP, verified by differential tests against real PHP across a version matrix.

## Pages

- [ElixirPhpEmailValidator](readme.md)
- [Compatibility &amp; Correctness](compatibility.md)
- [Changelog](changelog.md)
- [Attribution (NOTICE)](notice.md)
- [License](license.md)

## Modules

- [ElixirPhpEmailValidator](ElixirPhpEmailValidator.md): A bug-for-bug compatible Elixir port of PHP's
`filter_var($email, FILTER_VALIDATE_EMAIL)`.

## Mix Tasks

- [mix php.drift](Mix.Tasks.Php.Drift.md): Fetches `ext/filter/logical_filters.c` from php-src for one or more refs,
re-extracts the two regex literals, and compares their SHA-256 against the
copies vendored in `priv/php/`. The comparison uses the **full** literal
(`/pattern/flags`), so a change to either the pattern *or* the inline flags
(`/iD` ↔ `/iDu`, etc.) is caught — both affect `filter_var` behaviour.
- [mix php.extract](Mix.Tasks.Php.Extract.md): Downloads `ext/filter/logical_filters.c` from php-src for a given ref and
re-vendors the two regex strings into `priv/php/`, refreshing
`priv/php/MANIFEST.json` with new checksums.
- [mix php.golden](Mix.Tasks.Php.Golden.md): Runs every input in `test/fixtures/corpus.exs` through the real
`filter_var(..., FILTER_VALIDATE_EMAIL)` of your local `php` binary and
writes a golden verdict file to `test/fixtures/golden/php-<version>.tsv`.

