Я ищу функцию php, которая будет принимать входную строку и возвращать ее очищенную версию, удаляя все специальные символы, оставляя только буквенно-цифровые.
Мне нужна вторая функция, которая делает то же самое, но возвращает только буквенные символы AZ.
Любая помощь очень ценится.
unichars '\p{Latin}' '\p{Alphabetic}' '[^A-Za-z]' | wc -l
== 1192 кодовых точки, которые являются латинскими буквами, но не являются AZ. Принято считать, что для английского языка достаточно ASCII. Это не так, и поэтому написание AZ имеет запах кода .Ответы:
Предупреждение: обратите внимание, что английский не ограничивается только AZ.
Попробуйте это , чтобы удалить все , кроме аз, AZ и 0-9:
Если ваше определение буквенно-цифрового включает буквы на иностранных языках и устаревшие сценарии, тогда вам нужно будет использовать классы символов Unicode.
Попробуйте это оставить только AZ:
Причина предупреждения заключается в том, что такие слова, как резюме, содержат букву
é
, которая не будет соответствовать этому. Если вы хотите сопоставить определенный список букв, настройте регулярное выражение, чтобы включить эти буквы. Если вы хотите сопоставить все буквы, используйте соответствующие классы символов, как указано в комментариях.источник
[\p{Alphabetic}\p{Numeric}]
. Я забыл об алфавитном свойстве PCRE, но вы можете приблизить его с помощью[\pL\pM\pN]
.[A-Z]
, иногда бывает неверно .i
но мне всегда приходилось беспокоиться только об английской демографии ... Я забываю, что многим людям приходится думать о других языках. Кстати, я только что заметил, что вы самый известный пользователь, который никогда не задавал ни одного вопроса. Даже Джон Скит раньше задавал вопросы!Вместо
preg_replace
этого вы всегда можете использовать функции фильтрации PHP, используяfilter_var()
функцию с расширениемFILTER_SANITIZE_STRING
.источник
FILTER_SANITIZE_STRING
? Насколько мне известно, самое близкое, что можно получить таким образом, - это сFILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH
, но при этом останутся не только буквы и цифры, но также точки, косые черты, проценты и все такое.источник