Проверьте, содержит ли строка php только символы европейского языка - PullRequest
0 голосов
/ 12 февраля 2020

Я хочу проверить, содержит ли строка только символы, цифры и специальные символы, распространенные в Европе. Я нашел ответы типа Как проверить, содержит ли строка php только английские sh буквы и цифры? , но это не относится к французскому и немецкому языкам, немецкому или румынскому языкам. Я также хочу разрешить часто использовать специальные символы, такие как €,! "§ $% & / () = # | <>

Есть ли у кого-нибудь полный набор, который содержит все эти символы для проверки это?

Ответы [ 3 ]

2 голосов
/ 12 февраля 2020

Вы можете проверить латинские символы с помощью \p{Latin}, убедившись, что используется флаг регулярного выражения u:

<?php
$tests = [
    'éèäöüßäöüßäöüßäöü',
    'abcdeABCDE',
    '€, !"§$%&/()=#|<>',
    'ÄäAa',
    '*',
    'Здравствуйте'
];

foreach ($tests as $test) {
    if (!preg_match('/[^\p{Latin}0-9€, !"§$%&\/()=#|<>]/u', $test)) {
        echo "$test is okay\n";
    }
}

Отпечатки:

éèäöüßäöüßäöüßäöü is okay
abcdeABCDE is okay
€, !"§$%&/()=#|<> is okay
ÄäAa is okay
0 голосов
/ 12 февраля 2020

Я думаю, вы можете использовать регулярное выражение

$re = '/[A-Za-z0-9]*/m';
$str = 'человек';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);
0 голосов
/ 12 февраля 2020

Символы не в азимуте и азимуте будут:

[^a-zA-Z]

Таким образом, вы можете использовать что-то вроде:

Regex_CountMatches([String_Field],"[^a-zA-Z]")

Потому что эта функция имеет опцию case (значение по умолчанию 1 нечувствительно к регистру), просто поиск [^ az] тоже может работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...