Como validar intervalo de datas com hífen no PHP (sem confundir com palavras compostas)
Em muitos sistemas usamos campos de filtro que permitem selecionar um intervalo de datas,
normalmente no formato:
10/02/2026 - 15/02/2026
O problema acontece quando usamos apenas uma verificação simples como:
strpos($valor, ' - ') !== false
Isso pode gerar falsos positivos, por exemplo:
Guarda-roupa
Ou até:
Matriculado - dispensa
Ou seja, apenas verificar se existe hífen não é suficiente.
✔ A solução correta: validar o formato da data
O ideal é verificar se a string está exatamente no formato:
dd/mm/yyyy - dd/mm/yyyy
Para isso, usamos expressão regular (regex).
Função recomendada
function isIntervaloData(string $valor): bool
{
// Verifica o formato exato: 00/00/0000 - 00/00/0000
if (!preg_match('/^\d{2}\/\d{2}\/\d{4}\s-\s\d{2}\/\d{2}\/\d{4}$/', $valor)) {
return false;
}
// Divide as datas
[$dataInicio, $dataFim] = explode(' - ', $valor);
// Valida se são datas reais
$d1 = DateTime::createFromFormat('d/m/Y', $dataInicio);
$d2 = DateTime::createFromFormat('d/m/Y', $dataFim);
return $d1 !== false && $d2 !== false;
}
Como funciona a regex?
^ → início da string
\d{2}\/\d{2}\/\d{4} → data no formato 00/00/0000
\s-\s → espaço + hífen + espaço
\d{2}\/\d{2}\/\d{4} → segunda data
$ → fim da string
Testando na prática
Exemplo 1 — Intervalo válido
10/02/2026 - 15/02/2026
Resultado: ✔ true
Exemplo 2 — Palavra com hífen
Guarda-roupa
Resultado: ❌ false
Exemplo 3 — Texto com hífen separado
Matriculado - dispensa
Resultado: ❌ false
Por que não usar apenas strpos?
Porque strpos() apenas verifica se existe o caractere ou sequência na string.
Ele não garante:
- Que o formato seja de data
- Que existam duas datas
- Que as datas sejam válidas
Regex + DateTime::createFromFormat() torna sua validação:
- ✔ Mais segura
- ✔ Mais previsível
- ✔ Sem falsos positivos
- ✔ Ideal para filtros SQL com BETWEEN
Conclusão
Se você precisa detectar intervalos de data no PHP, nunca valide apenas pelo hífen.
Sempre valide o formato completo da string.
Essa pequena melhoria evita bugs silenciosos em filtros e relatórios.
Simples, direto e profissional.