Regex нечувствителен к акценту для коротких кодов

Я работаю с плагином WordPress CFDB и пытаюсь отфильтровать имя с помощью акцентов.

Создатель плагина сказал мне, что он работает с Regex.

Фильтр работает с использованием модификаторов режима (например, без учета регистра "i"):

[cfdb-datatable form="DB" filter="Name~~/.*$_GET(value2filter).*/i"]

Теперь я хочу добавить своего рода "модификатор режима" для нечувствительного к акценту. Я попытался добавить акценты и их переводы в юникоде, но это не работает с короткими кодами. Любая идея?

1 ответ

Игнорирование акцентов, то есть сопоставление "é" с "e", не может быть сделано "элегантно" с единичными точечными символами Unicode. Вы должны сделать что-то вроде:

/jos[eé]/i

Чтобы соответствовать вариантам акцента Jose, и вам придется создать регулярное выражение на уровне приложения, который должен знать обо всех вариантах для каждой буквы.

Однако, если ваши входные символы акцентированы с использованием диакритических знаков (отдельных кодовых точек, которые "объединяются" с предыдущим символом), вы можете использовать класс диакритических знаков posix \p{M}Например:

/jose\p{M}?/i

Тогда вы могли бы просто вставить \p{M}? после каждой буквы (или, возможно, просто каждой гласной), чтобы создать регулярное выражение.

Другие вопросы по тегам