# The Spoofchecker class

(PHP 5 >= 5.4.0, PHP 7, PECL intl >= 2.0.0)

## Introduction

This class is provided because Unicode contains large number of characters and incorporates the varied writing systems of the world and their incorrect usage can expose programs or systems to possible security attacks using characters similarity.

Provided methods allow to check whether an individual string is likely an attempt at confusing the reader (spoof detection), such as "pаypаl" spelled with Cyrillic 'а' characters.

## Class synopsis

Spoofchecker {
/* Constants */
const number ASCII = 0x10000000 ;
const number HIGHLY_RESTRICTIVE = 0x30000000 ;
const number MODERATELY_RESTRICTIVE = 0x40000000 ;
const number MINIMALLY_RESTRICTIVE = 0x50000000 ;
const number UNRESTRICTIVE = 0x60000000 ;
const number SINGLE_SCRIPT_RESTRICTIVE = 0x20000000 ;
const integer SINGLE_SCRIPT_CONFUSABLE = 1 ;
const integer MIXED_SCRIPT_CONFUSABLE = 2 ;
const integer WHOLE_SCRIPT_CONFUSABLE = 4 ;
const integer ANY_CASE = 8 ;
const integer SINGLE_SCRIPT = 16 ;
const integer INVISIBLE = 32 ;
const integer CHAR_LIMIT = 64 ;
/* Methods */
public areConfusable ( string `$str1` , string `$str2` [, string `&$error` ] ) : bool
public __construct ( void )
public isSuspicious ( string `$text` [, string `&$error` ] ) : bool
public setAllowedLocales ( string `$locale_list` ) : void
public setChecks ( int `$checks` ) : void
}

## Predefined Constants

`Spoofchecker::ASCII`

`Spoofchecker::HIGHLY_RESTRICTIVE`

`Spoofchecker::MODERATELY_RESTRICTIVE`

`Spoofchecker::MINIMALLY_RESTRICTIVE`

`Spoofchecker::UNRESTRICTIVE`

`Spoofchecker::SINGLE_SCRIPT_RESTRICTIVE`

`Spoofchecker::SINGLE_SCRIPT_CONFUSABLE`

`Spoofchecker::MIXED_SCRIPT_CONFUSABLE`

`Spoofchecker::WHOLE_SCRIPT_CONFUSABLE`

`Spoofchecker::ANY_CASE`

`Spoofchecker::SINGLE_SCRIPT`

`Spoofchecker::INVISIBLE`

`Spoofchecker::CHAR_LIMIT`

## Changelog

Version | Description
--- | ---
7.3.0 | Class constants used by Spoofchecker::setRestrictionLevel() such as `Spoofchecker::ASCII`, `Spoofchecker::HIGHLY_RESTRICTIVE`, `Spoofchecker::MODERATELY_RESTRICTIVE`, `Spoofchecker::MINIMALLY_RESTRICTIVE`, `Spoofchecker::UNRESTRICTIVE`, `Spoofchecker::SINGLE_SCRIPT_RESTRICTIVE` has been added.

## Table of Contents

- Spoofchecker::areConfusable — Checks if given strings can be confused
- Spoofchecker::__construct — Constructor
- Spoofchecker::isSuspicious — Checks if a given text contains any suspicious characters
- Spoofchecker::setAllowedLocales — Locales to use when running checks
- Spoofchecker::setChecks — Set the checks to run