次のコードは、異なるマルチバイト文字列に対して異なる動作をするのはなぜですか?
echo preg_replace('@(?=\pL)@u', '*', 'م'); // prints: '*م' ✓
echo preg_replace('@(?=\pL)@u', '*', 'ض'); // prints: '*ض' ✓
echo preg_replace('@(?=\pL)@u', '*', 'غ'); // prints: '*�*�' ✗
echo preg_replace('@(?=\pL)@u', '*', 'ص'); // prints: '*�*�' ✗