Я думаю, что вы можете использовать маленькую букву '/ u' после регулярного выражения, например,
$str = preg_replace('/[^أب]/u', '', $str);
Обратите внимание, что такая же проблема будет возникать всякий раз, когда вы используете заглавную '/ U' после регулярного выражения.