php str_replace для датских символов - PullRequest
1 голос
/ 10 апреля 2019

Я удаляю датские специальные символы из строки, у меня есть такая строка 1554896020A2å.pdf Датские символы - это "ø ø å" для удаления датских символов, которые я использую str_replace Я успешно удалил эти два символа «æ ø», но я не знаю, этот «å» не удаляется из строки. заранее спасибо за помощь.

Я использовал это, чтобы удалить датский символ

$patterns = array('å', 'æ', 'ø');
$replacements = array('/x7D', 'X', '/x7C');
echo str_replace($patterns, $replacements, 1554896020A2å.pdf);

1 Ответ

1 голос
/ 10 апреля 2019

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 для сопоставления без учета регистра, при необходимости удалите его.

...