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は想定外の「数字」にもマッチしてしまうため、使いどころが難しいと思います。