PCRE正規表現のUTF-8モードにおける「\d」の挙動

PHPで、PCRE正規表現の使用時に「u」オプションを指定すると、パターン文字列をUTF-8文字列として処理する「UTF-8モード」になります。

参考:PHP: 正規表現パターンに使用可能な修飾子 - Manual

UTF-8モードでは、「\d」は半角数字以外の数字(全角数字等)にもマッチするようになります:
<?php
var_dump(preg_match('/\d/', '1')); // int(0)
var_dump(preg_match('/\d/u', '1')); // int(1) ※全角数字の「1」
var_dump(preg_match('/\d/u', '๑')); // int(1) ※タイ文字の「1」
var_dump(preg_match('/\d/u', '一')); // int(0) ※漢字の「1」はマッチしない
ただし、全角数字にマッチさせたいなら、文字クラス[0-9]の方が良いでしょう:
<?php
var_dump(preg_match('/[0-9]/', '123')); // int(1) ※全角数字にマッチしたいならこっち
var_dump(preg_match('/[0-90-9]/', '1')); // int(1) ※全角も半角もOK
var_dump(preg_match('/[0-90-9]/', '1')); // int(1) ※全角も半角もOK
\dは想定外の「数字」にもマッチしてしまうため、使いどころが難しいと思います。