a
в строке - не единица кода, это кодовая точка, состоящая из двух единиц кода \xCC
и \x8A
.
Таким образом, вы можете добавить это значение к вашим шаблонам / заменам:
$patterns = array('å', "a\xCC\x8A", "A\xCC\x8A", 'Å', 'æ', 'ø');
$replacements = array('/x7D', '/x7D', '/x7D', '/x7D', 'X', '/x7C');
echo str_replace($patterns, $replacements, '1554896020A2å.pdf');
// => 1554896020A2/x7D.pdf
См. PHP демо
В PHP 7 вы можете использовать "a\u{030A}"
/ "A\u{030A}"
, чтобы сопоставить эти a
буквы с их диакритическим символом.
Обратите внимание, что вы можете использовать /a\p{M}+/ui
шаблон регулярного выражения с preg_replace
, если вы решите использовать регулярное выражение и сопоставить любые a
s с последующими диакритическими знаками. i
для сопоставления без учета регистра, при необходимости удалите его.