# 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 int|float ASCII = 0x10000000 ;
const int|float HIGHLY_RESTRICTIVE = 0x30000000 ;
const int|float MODERATELY_RESTRICTIVE = 0x40000000 ;
const int|float MINIMALLY_RESTRICTIVE = 0x50000000 ;
const int|float UNRESTRICTIVE = 0x60000000 ;
const int|float SINGLE_SCRIPT_RESTRICTIVE = 0x20000000 ;
const int SINGLE_SCRIPT_CONFUSABLE = 1 ;
const int MIXED_SCRIPT_CONFUSABLE = 2 ;
const int WHOLE_SCRIPT_CONFUSABLE = 4 ;
const int ANY_CASE = 8 ;
const int SINGLE_SCRIPT = 16 ;
const int INVISIBLE = 32 ;
const int CHAR_LIMIT = 64 ;
/* Methods */
public areConfusable ( string `$str1` , string `$str2` [, string `&$error` ] ) : bool
public __construct ( )
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