Spoofchecker does NOT recognize zero-width spaces
オープン
@devnexen がすでに取り組んでいます。
2025年11月7日 から。
Extension: intl
Feature
- 主要言語
- C
- スター
- 40.4k
- フォーク
- 8.1k
- 平均マージ
- 2日 13時間
- マージ済み PR(30日)
- 96
説明
Description
https://3v4l.org/9dMTh#v8.4.14
I found out about this when using the Symfony NoSuspiciousCharacters validator, and the example code is a reproduction of all steps during debugging
https://symfony.com/doc/current/reference/constraints/NoSuspiciousCharacters.html
The following code:
<?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";
}
Resulted in this output:
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)
But I expected this output instead:
Zero Width Space
int(1)
bool(true)
int(1) (no idea)
Zero Width Non-Joiner
int(1)
bool(true)
int(1) (no idea)
Zero Width Joiner
int(1)
bool(true)
int(1) (no idea)
Zero Width No-Break Space
int(1)
bool(true)
int(1) (no idea)
https://github.com/symfony/symfony/issues/62338
PHP Version
PHP 8.4.14 (cli) (built: Oct 24 2025 19:15:19) (NTS)
Copyright (c) The PHP Group
Built by https://github.com/docker-library/php
Zend Engine v4.4.14, Copyright (c) Zend Technologies
with Zend OPcache v8.4.14, Copyright (c), by Zend Technologies
with Xdebug v3.4.7, Copyright (c) 2002-2025, by Derick Rethans
ICU v72.1
Operating System
No response
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
評価
この issue はまだ評価されていません。