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}?
после каждой буквы (или, возможно, просто каждой гласной), чтобы создать регулярное выражение.