PHPackages                             insoutt/ec-validator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. insoutt/ec-validator

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

insoutt/ec-validator
====================

Validador de Cedula, RUC y mas datos de Ecuador

1.1.4(4mo ago)42.2k↓44.8%[4 PRs](https://github.com/insoutt/ec-validator/pulls)1MITPHPPHP ^7.4|^8.1CI passing

Since Oct 20Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/insoutt/ec-validator)[ Packagist](https://packagist.org/packages/insoutt/ec-validator)[ Docs](https://github.com/insoutt/ec-validator)[ GitHub Sponsors](https://github.com/insoutt)[ RSS](/packages/insoutt-ec-validator/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (6)Dependencies (3)Versions (10)Used By (1)

Validar Cedula, RUC y más datos de Ecuador
==========================================

[](#validar-cedula-ruc-y-más-datos-de-ecuador)

[![Latest Version on Packagist](https://camo.githubusercontent.com/46fb5f42ec841b0ef263a8b21be8afee8513682b31d84b95622df3560e14f1cf/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f696e736f7574742f65632d76616c696461746f722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/insoutt/ec-validator)[![Tests](https://camo.githubusercontent.com/a9c0b61465d05b39661d2c138de01ecba80bd0cb8199c90c3ef9feb4b5e8a6d7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f696e736f7574742f65632d76616c696461746f722f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/insoutt/ec-validator/actions/workflows/run-tests.yml)[![Total Downloads](https://camo.githubusercontent.com/b8c2ecb70d322d0348430531cf1201c05819ad4e4eb7a2bcc04812d14b2eb431/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f696e736f7574742f65632d76616c696461746f722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/insoutt/ec-validator)

Con `insoutt/ec-validator` podrás realizar validaciones de distintos datos que se suele usar frecuentemente en Ecuador, como por ejemplo:

- Validar RUC
- Validar cédula
- Validar número de teléfono fijo
- Validar número de celular
- Validar placa de carro
- Validar placa de moto

Si crees que falta validar alguna información adicional puedes crear una sugerencia en el [Foro de Discuciones](https://github.com/insoutt/ec-validator/discussions/new?category=ideas) para desarrollarla o también puedes crear un [Pull Request](https://github.com/insoutt/ec-validator/pulls) para ser implementado.

Installación
------------

[](#installación)

Para instalar el paquete debes ejecutar el siguiente comando en la terminal de tu proyecto:

```
composer require insoutt/ec-validator
```

Uso
---

[](#uso)

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

use Insoutt\EcValidator\EcValidator;

// Crear Validador
$validator = new EcValidator() // or EcValidator::make();
```

### Validar Cédula

[](#validar-cédula)

```
if ($validator->validateCedula('0102030405')) {
    echo "Cédula válida";
} else {
    echo "Cédula no válida: " . $validator->getError();
}
```

### Validar RUC

[](#validar-ruc)

El número de RUC no tiene un algoritmo específico definido por lo que no existe un método exacto para validarlo. Ante esto la validación que se realiza es de estructura validando el código de provincia y el número de establecimiento.

Si conoces algún mejor método puedes publicarlo en el [Foro de Discuciones](https://github.com/insoutt/ec-validator/discussions/new?category=q-a) o [crear un Pull Request](https://github.com/insoutt/ec-validator/pulls) para implementarlo.

En el caso de validaciones de un RUC personal si se podría realizar ya que la comprobación sería la misma que la cédula más el código de establecimiento que por lo general es `001`.

```
if ($validator->validateRuc('1790012356001')) {
    echo "RUC válido";
} else {
    echo "Ruc no válido: " . $validator->getError();
}
```

### Validar placa de un vehículo

[](#validar-placa-de-un-vehículo)

Se puede realizar validaciones especificas por placa de moto, placa de carro o también se puede realizar una validación más general para validar ambos casos.

```
// Validar placa de auto o moto
if ($validator->validatePlaca('ABC1234') || $validator->validatePlaca('IX000A')) {
    echo "Placa de auto válida";
} else {
    echo "Placa de auto no válida: " . $validator->getError();
}

// Validar placa de auto
if ($validator->validatePlaca('ABC1234', EcValidator::VALIDATE_PLACA_CAR)) {
    echo "Placa de auto válida";
} else {
    echo "Placa de auto no válida: " . $validator->getError();
}

// Validar placa de moto
if ($validator->validatePlaca('MOTO123', EcValidator::VALIDATE_PLACA_MOTO)) {
    echo "Placa de moto válida";
} else {
    echo "Placa de moto no válida: " . $validator->getError();
}
```

### Validar número de celular

[](#validar-número-de-celular)

Para validar un número de celular existen 3 escenarios:

- `EcValidator::VALIDATE_NATIONAL`: Número de celular nacional que empieza con `09`, para llamadas/mensajes dentro de Ecuador
- `EcValidator::VALIDATE_INTERNATIONAL`: Número de celular con el código de país `593`, para llamadas internacionales.
- `EcValidator::VALIDATE_GENERAL`: Validar ambos casos

```
// Validar número de celular con prefijo 09 o con prefijo internacional 593
if ($validator->validateCellphone('0991234567') || $validator->validateCellphone('593991234567')) {
    echo "Número de celular válido";
} else {
    echo "Número de celular no válido: " . $validator->getError();
}

// Validar número de celular (nacional)
if ($validator->validateCellphone('0991234567', EcValidator::VALIDATE_NATIONAL)) {
    echo "Número de celular válido";
} else {
    echo "Número de celular no válido: " . $validator->getError();
}

// Validar número de celular (internacional)
if ($validator->validateCellphone('593991234567', EcValidator::VALIDATE_INTERNATIONAL)) {
    echo "Número de celular válido";
} else {
    echo "Número de celular no válido: " . $validator->getError();
}
```

### Validar teléfono convencional

[](#validar-teléfono-convencional)

Para los números de teléfono convencionales existen 4 tipos de validaciones:

- `EcValidator::VALIDATE_LOCAL`: Número de teléfono local para llamadas que son en la misma ciudad/provincia.
- `EcValidator::VALIDATE_NATIONAL`: Número de teléfono con el código de la provincia para llamadas entre distintas ciudades/provincias.
- `EcValidator::VALIDATE_INTERNATIONAL`: Número de teléfono con el código de país y provincia para llamadas internacionales.
- `EcValidator::VALIDATE_GENERAL`: Validar cualquiera de los 3 casos.

```
// Validar teléfono local (sin código de provincia)
if ($validator->validateTelephone('2334590', EcValidator::VALIDATE_LOCAL)) {
    echo "Número de teléfono válido";
} else {
    echo "Número de teléfono no válido: " . $validator->getError();
}

// Validar teléfono (con código de provincia)
if ($validator->validateTelephone('072334590', EcValidator::VALIDATE_NATIONAL)) {
    echo "Número de teléfono válido";
} else {
    echo "Número de teléfono no válido: " . $validator->getError();
}

// Validar teléfono (con código de internacional)
if ($validator->validateTelephone('59322345678', EcValidator::VALIDATE_INTERNATIONAL)) {
    echo "Número de teléfono válido";
} else {
    echo "Número de teléfono no válido: " . $validator->getError();
}

// Validar teléfono local, con código de provincia o en formato interacional
if ($validator->validateTelephone('022345678') || $validator->validateTelephone('022345678') || $validator->validateTelephone('59322345678')) {
    echo "Número de teléfono válido";
} else {
    echo "Número de teléfono no válido: " . $validator->getError();
}
```

API
---

[](#api)

A continuación se detalla los parámetros disponibles de cada método:

### `validateCedula($value)`

[](#validatecedulavalue)

MétodoArgumentosDescripciónRetorno`validateCedula``$value` (string)Valida un número de cédula ecuatoriana.`true` si es válido, `false` si no es válido.---

### `validateRuc($value)`

[](#validaterucvalue)

MétodoArgumentosDescripciónRetorno`validateRuc``$value` (string)Valida un número de RUC ecuatoriano.`true` si es válido, `false` si no es válido.---

### `validatePlaca($value, $type = self::VALIDATE_GENERAL)`

[](#validateplacavalue-type--selfvalidate_general)

MétodoArgumentosDescripciónRetorno`validatePlaca``$value` (string), `$type` (string)Valida una placa de vehículo. Tipos: `VALIDATE_PLACA_CAR`, `VALIDATE_PLACA_MOTO`, `VALIDATE_GENERAL`.`true` si es válido, `false` si no es válido.---

### `validateCellphone($value, $type = self::VALIDATE_GENERAL)`

[](#validatecellphonevalue-type--selfvalidate_general)

MétodoArgumentosDescripciónRetorno`validateCellphone``$value` (string), `$type` (string)Valida un número de celular. Tipos: `VALIDATE_GENERAL`, `VALIDATE_NATIONAL`, `VALIDATE_INTERNATIONAL`.`true` si es válido, `false` si no es válido.---

### `validateTelephone($value, $type = self::VALIDATE_GENERAL)`

[](#validatetelephonevalue-type--selfvalidate_general)

MétodoArgumentosDescripciónRetorno`validateTelephone``$value` (string), `$type` (string)Valida un número de teléfono fijo. Tipos: `VALIDATE_LOCAL`, `VALIDATE_NATIONAL`, `VALIDATE_INTERNATIONAL`, `VALIDATE_GENERAL`.`true` si es válido, `false` si no es válido.---

### `getError()`

[](#geterror)

MétodoArgumentosDescripciónRetorno`getError`NingunoDevuelve el último mensaje de error registrado después de una validación fallida.Mensaje de error o cadena vacía si no hay errores.Testing
-------

[](#testing)

Al clonar el repositorio en tu máquina local puedes ejecutar el siguiente comando para ejecutar las pruebas.

```
composer test
```

**TIP:** Si deseas conocer mejor el funcionamiento de cada método es recomendable revisar los distintos ejemplos disponibles en `tests/EcValidatorTest.php`.

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](https://github.com/spatie/.github/blob/main/CONTRIBUTING.md) for details.

Créditos
--------

[](#créditos)

- [insoutt](https://github.com/insoutt)
- [All Contributors](../../contributors)

Contacto
--------

[](#contacto)

- 𝕏 (Twitter): [@insoutt](http://x.com/insoutt)

Support us
----------

[](#support-us)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

46

—

FairBetter than 93% of packages

Maintenance83

Actively maintained with recent releases

Popularity25

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 68.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~87 days

Recently: every ~108 days

Total

6

Last Release

139d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/5ecbd3e7b8e7a300fb26779921490da9ae9ff45d78dabc4da008b5634b1f5c0a?d=identicon)[insoutt](/maintainers/insoutt)

---

Top Contributors

[![insoutt](https://avatars.githubusercontent.com/u/9189972?v=4)](https://github.com/insoutt "insoutt (13 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (3 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (3 commits)")

---

Tags

insouttec-validator

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/insoutt-ec-validator/health.svg)

```
[![Health](https://phpackages.com/badges/insoutt-ec-validator/health.svg)](https://phpackages.com/packages/insoutt-ec-validator)
```

###  Alternatives

[webmozart/assert

Assertions to validate method input/output with nice error messages.

7.6k894.0M1.2k](/packages/webmozart-assert)[bensampo/laravel-enum

Simple, extensible and powerful enumeration implementation for Laravel.

2.0k15.9M104](/packages/bensampo-laravel-enum)[swaggest/json-schema

High definition PHP structures with JSON-schema based validation

48612.5M73](/packages/swaggest-json-schema)[stevebauman/purify

An HTML Purifier / Sanitizer for Laravel

5325.6M19](/packages/stevebauman-purify)[ashallendesign/laravel-config-validator

A package for validating your Laravel app's config.

217905.3k5](/packages/ashallendesign-laravel-config-validator)[crazybooot/base64-validation

Laravel validators for base64 encoded files

1341.9M8](/packages/crazybooot-base64-validation)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
