|
|
|
| Мне надо проверить строку на допустимые символы. Допустимы символы будут в массиве или в строке символов.
В массиве должны быть все символы алфавита кроме английских (это для опорного примера). В том числе знаки препинания, цифры и т.д.
Регулярные выражения мне не нужны и теперь после попыток не интересны. (Везде путаные формальные описания, документация изобилует неточностями и вымыслами и затрата времени на практическое изучение требует не соизмеримого с конкретной задачей времени.) | |
|
|
|
|
|
|
|
для: Valleri
(19.07.2011 в 12:23)
| | Ну если вы вообще категорически настроены против регулярных выражений, то можете разбить исходную строку на массив символов, уникализуете его и делаете пересечение с массивом допустимых символов array_intersect, после чего сравниваете длину результата с длиной исходного уникализованного массива. Если они она меньше, то значит проверка не пройдена.
Примерно так:
<?
$pattern = array(' ','.','а','б','я','г' ... );
$str = 'Строка для примера';
$count = count(array_unique(str_split($str)));
$res = count(array_intersect($pattern,$a));
if($count > $res) echo "Есть недопустимые символы";
?>
|
| |
|
|
|
|
|
|
|
для: Axxil
(19.07.2011 в 12:53)
| | Мне набить строку из всех читабельных символов. Я не могу найти список всех символов. Я не знаю как правильно список всех читабельных символов назвать и сформировать запрос.
Вот эту строку мне и надо набить из всех читабельных символов. Остальное мне не важно.
$pattern = array(' ','.','а','б','я','г' ... );
|
То что не надо будет я удалю. Но для опоры нужна строка всех читабельных символов.Как правильно сказать я не знаю | |
|
|
|
|
|
|
|
для: Valleri
(19.07.2011 в 13:23)
| | Ненужны и не интересны... ага. А потом городить орогод из 100 строк ненадёжного кода вместо того чтобы решить проблему одной строкой. Потратье немного времени на Фридла. Нигде более не видел настолько подробного, полного и понятного описания. Причём на русском языке. | |
|
|
|
|
автор: ..... (19.07.2011 в 13:33) |
|
|
для: Valleri
(19.07.2011 в 13:23)
| | Пуск->Выполнить->"charmap"
// may be | |
|
|
|
|
|
|
|
для: Valleri
(19.07.2011 в 13:23)
| | Советую всё же разобраться в регулярных выражениях. Иначе будете постоянно изобретать велосипеды на ровном месте.
Например шаблон для вашего случая выглядит так:
<?
if(preg_match('|[a-z]+|i',$str)){
echo "Есть недопустимые символы";
}
?>
|
| |
|
|
|
|
|
|
|
для: Axxil
(19.07.2011 в 14:12)
| | Можно обойтись без плюса. И регулярка короче, и производительность чуть выше. | |
|
|
|
|
|
|
|
для: Valleri
(19.07.2011 в 12:23)
| |
<?
$str = '123asbdn';
for ( $i = 0, $len = strlen($str); $i < $len; ++$i ) {
$ord = ord($str[$i]);
if ( ($ord >= 65 && $ord <= 90) || ($ord >= 97 && $ord <= 122) ) {
print 'Строка содержит английские буквы';
break;
}
}
| Подходит только для однобайтных кодировок. | |
|
|
|