Why following code behaves differently for different multi-bye strings?
echo preg_replace('@(?=\pL)@u', '*', 'م'); // prints: '*م' ✓
echo preg_replace('@(?=\pL)@u', '*', 'ض'); // prints: '*ض' ✓
echo preg_replace('@(?=\pL)@u', '*', 'غ'); // prints: '*�*�' ✗
echo preg_replace('@(?=\pL)@u', '*', 'ص'); // prints: '*�*�' ✗