3v4l.org

run code in 300+ PHP versions simultaneously
<?php $values = [ "Zero Width Space" => "MaxMustermann", "Zero Width Space" => "Max\u{200B}Mustermann", "Zero Width Non-Joiner" => "Max\u{200C}Mustermann", "Zero Width Joiner" => "Max\u{200D}Mustermann", "Zero Width No-Break Space" => "Max\u{FEFF}Mustermann", ]; $checker = new \Spoofchecker(); $checks = \Spoofchecker::INVISIBLE | \Spoofchecker::MIXED_NUMBERS | \Spoofchecker::HIDDEN_OVERLAY; $checks |= \Spoofchecker::SINGLE_SCRIPT; $checker->setRestrictionLevel(\Spoofchecker::MODERATELY_RESTRICTIVE); $checker->setAllowedLocales('de,fr,it'); $checker->setChecks($checks); foreach ($values as $check => $value) { echo $check."\n"; var_dump(preg_match('/[\x{200B}\x{200C}\x{200D}\x{FEFF}\x{2060}\x{2061}\x{2062}\x{2063}\x{2064}]/u', $value)); var_dump($checker->isSuspicious($value, $errorCode)); var_dump($errorCode); echo "\n"; }
Output for 8.5.1 - 8.5.3
Fatal error: Uncaught Error: Class "Spoofchecker" not found in /in/9dMTh:11 Stack trace: #0 {main} thrown in /in/9dMTh on line 11
Process exited with code 255.
Output for 8.3.5 - 8.3.30, 8.4.9 - 8.4.18, 8.5.0
Zero Width Space int(1) bool(false) int(0) Zero Width Non-Joiner int(1) bool(false) int(0) Zero Width Joiner int(1) bool(false) int(0) Zero Width No-Break Space int(1) bool(false) int(0)
Output for 8.1.34, 8.2.30
Fatal error: Uncaught Error: Undefined constant Spoofchecker::MIXED_NUMBERS in /in/9dMTh:13 Stack trace: #0 {main} thrown in /in/9dMTh on line 13
Process exited with code 255.

preferences:
60.39 ms | 408 KiB | 5 Q