Проверить русские буквы php

Форум PHP программистов ► PHP практикум ► PHP для начинающих

Не работает функция, подскажите пожалуйста, где ошибка:

//Проверка присутствия в тексте только русских букв
function check_rus($str)

setlocale(LC_CTYPE, "ru_RU.CP1251");
if (preg_match("/^([а-яА-Я]+)$/", $str))

return true;
>
return false;
>

Файл у тебя тоже в windows-1251 ?
Эта проверка вернет true если ты только передашь только одно слово на проверку

Покажи пример, что ты передаешь на проверку ?

Спустя 17 секунд Winston написал(а): alex12060

Winston
я и передавала на проверку слово.
Теперь мне нужно проверить чтоб были только русские буквы, пробел и «-«.

//проверка данных
$lastname=iconv('UTF-8', 'cp1251', $res->'family-name'>);
$lastname=ucfirst(strtolower(trim($lastname)));
if(check_rus($lastname))
. >

\s — это пробел, если он те нужен

$lastname=iconv('UTF-8', 'windows-1251', $res->'family-name'>);

Хм.. Мне всегда казалось, что CP1251 используется только в запросах sql, а в остальных случаях windows-1251. Я оказался не прав, CP1251 тоже нормально работает

Да, но почему то только для utf-8.

Если делаю свою проверку с приобразованием типов и сменой регистров, то ерунду выдаёт.

через слово, через два слова — срабатывает, то не срабатывает, хотя все слова на русском.

setlocale(LC_CTYPE, "ru_RU.CP1251");

function check_rus($str)

if (preg_match("/^([а-яё\s-]+)$/iu", $str))

return true;
>
return false;
>
$lastname = $res->'family-name'>;
$lastname = ucfirst(strtolower(trim($lastname)));
var_dump(check_rus($lastname));

if (preg_match(«/^([а-яё\s-]+)$/iu», $str))
«u»=оставить?

Интересные вы личности. ё отдельно ставите, но почему-то думаете, что при этом с Ё движок регулярок прекрасно знаком.

именно свойства объекта $res.
Если в названиях полей в таблице БД есть дефис, то после mysql_fetch_object приходится так-же извращатся

php
$lastname=$_POST["data"];
function check_rus($lastname)

setlocale(LC_CTYPE, "ru_RU.UTF-8");
if (preg_match("#^[а-яё\-\s]+$#i", $lastname))

return true;
>
return false;
>


$lastname=ucfirst(strtolower(trim($lastname)));
if(check_rus($lastname))

echo "рус";
>
else

echo "eng";
>
?>
setlocale(LC_CTYPE, "ru_RU.CP1251");

function check_rus($str)

if (preg_match("/^([а-яёЁ\s-]+)$/iu", $str))

return true;
>
return false;
>
$lastname = $_POST['data'];
$lastname = ucfirst(strtolower(trim($lastname)));
var_dump(check_rus($lastname));

зачем там условие. Даже если хочется четких типов, есть приведение. А вообще вот это должно работать без всяких изысков.

function check_rus($str) 

return (boolean)preg_match("/^([а-яёЁ\s-]+)$/iu", $str);
>
$lastname = 'русский букв Ё';

var_dump(check_rus($lastname));
setlocale(LC_CTYPE, "ru_RU.CP1251");

function check_rus($str)

if (preg_match("/^([а-яёЁ\s-]+)$/iu", $str))

return true;
>
return false;
>
$lastname = $_POST['data'];
$lastname = ucfirst(strtolower(trim($lastname)));
var_dump(check_rus($lastname));
form action="rus_eng.php" method=POST>
input type=data name=searchword size=30>input>
input type=submit value="Искать">input>br>br>
form>
form action="rus_eng.php" method=POST> 
input type="text" name="searchword" size=30>input>
input type="submit" value="Искать">input>br>br>
form>

php
function check_rus($str)

$str = iconv(‘CP1251’, ‘UTF-8’, $str);
if (preg_match(«/^([а-яёЁ\s-]+)$/iu», $str))
return true;

return false;
>

$lastname = $_POST[‘searchword’];
var_dump(check_rus($lastname));
?>

form action="rus_eng.php" method=POST>
input type=data name=searchword size=30>input>
input type=submit value="Искать">input>br>br>
form>
form action="rus_eng.php" method=POST> 
input type="text" name="searchword" size=30>input>
input type="submit" value="Искать">input>br>br>
form>

php
function check_rus($str)

$str = iconv(‘CP1251’, ‘UTF-8’, $str);
if (preg_match(«/^([а-яёЁ\s-]+)$/iu», $str))
return true;

return false;
>

$lastname = $_POST[‘searchword’];
var_dump(check_rus($lastname));
?>

Winston
а с каких пор инпут стал парным тэгом? И в кавычках должны быть значения всех атрибутов.
html синтаксис

 type="text" name="searchword" size="30">
 type="text" name="searchword" size="30" />

Источник

Проверка строки на присутствие кириллицы?

Есть-ли стандартная функция в php которая возвращает true/false в зависимости от того есть ли в строке кириллица?
Гугл ответа не дал.

brR8Gdoc44Nk21.pngnAyXoegHWW4D2Z.pngВедь никакой магии, просто копипаст — и все О_О

za4me

Искал в гугле, все ответы в данных ссылках работают через регулярки. Такое решения я и сам могу написать. Стало интересно может быть уже есть реализованная функция в php и не нужно писать новую функцию.

Борис Якушев: что за глупость вы только что написали? fi2.php.net/manual/ru/ref.strings.php — вот вам список уже реализованных функций

za4me

IceJOKER: Вы не поверите, но раньше я только тут смотрел функции. fi2.php.net/manual/ru/function.addcslashes.php И если честно было очень лень перечитывать описание каждой функции .

Не знал что есть страница с кратким описанием функций. Спасибо.

$str = 'test string for cyrillic зюя'; $contains_cyrillic = (bool) preg_match('/[\p]/u', $str);

skvernoslov

Если из стандартного набора Вам выше написали варианты с preg_match, а так нашёл функцию которая проверяет наличие в строке русских букв в кодировке UTF-8 и windows-1251(cp1251) и возвращает true или файле

$string = "Строка с русскими буквами"; $res = isContainsRussianLetters($string);//получаем true или false в зависимости есть ли русские буквы в строке

Сам код функции по ссылке blog.ivru.net/?id=232

В моём случаи нужно было чтобы проверка работала без настройки локали и работала для 2-х кодировок, поэтому выбрал именно эту функцию, поскольку она проверяет жёстко по кодам символов и теоретически для указанных кодировок должна работать на любом хостинге с любыми настройками.

Источник

Функции для поиска русских букв по тексту файлов в кодировке UTF-8 или ANSI не зависимо от регистра на языке PHP

Ранее я начал писать браузерный редактор для PHP файлов с коммандером в котором предусмотрел возможность поиска текста внутри файла(более подробно о редакторе и файловом коммандере можно прочитать по ссылке: blog.ivru.net/?id=240, на той же странице выложен его исходный код). Изначально поиск был реализован таким образом, что при попытке найти русский текст при запросе формы он отправлялся в кодировке UTF-8, при этом получилось так что один из API севера на котором так же стоял указанный редактор сохранял результат своей выборки, в том числе русские слова, в кодировке ANSI, в результате чего поиск из редактора не приводил к обнаружению нужных файлов. Поэтому я решил доработать редактор так чтобы он искал заданную фразу по русским словам как в кодировке ANSI так и в UTF-8, а так же не зависимо как от регистра в котором вводятся символы, так и от регистра символов в файлах по которым осуществляется поиск.

Для внедрения указанного функционала, было решено внести в файл настроек переменную указывающую о необходимости приведения всех русских букв из кодировки UTF-8 в ANSI в искомой фразе а так же файлов по которым осуществляется поиск, после чего искомую фразу и файлов по которым осуществляется поиск нужно привести к нижнему регистру и только после этого осуществлять поиск заданной фразы в тексте файлов.

Для реализации указанного подхода было написано две функции.

Первая функция просто проверяет наличие русских букв любого регистра в искомой строке как в кодировке ANSI так и в UTF-8. Данная функция используется для оптимизации поиска, на случай если искомая строка не содержит русских символов, а значит нет необходимости использования описанных функций преобразования для осуществления поиска по такой строке. То-есть если например фраза которую необходимо найти в файлах состоит только для русских букв, в этом случаи будет выполнена только проверка по данной фразе и выяснено что русских букв в ней нет, а значит не требуется совершать преобразования файлов по которым осуществляется поиск, не зависимо от того есть в этих файлах русские буквы или нет, поскольку они не являются важными в данной момент для поиска, а нужны только латинские символы, для которых нет необходимости преобразования кодировки, поскольку символы латинских букв и в ANSI и UTF-8 имеют одинаковые коды для соответствующих букв. Таким образом экономятся ресурсы процессора, поскольку избегаются преобразования в которых нет необходимости и не затрачивается излишнее время на поиск.

Вторая функция осуществляет приведение русских букв в нижнему регистру кодировки и к кодировке ANSI. Данная функция применяется как к поисковой строчке так и к всем файлам по которым осуществляется поиск, если в искомой строке есть русские буквы в кодировке UTF-8 или ANSI, то есть если первая функция в результате передачи в её искомой строки вернула true.

Функция проверки наличия в строке русских букв в кодировке UTF-8 или ANSI не зависимо от регистра.

Функция для приведения русских букв любого регистра и в кодировке UTF-8 или ANSI к нижнему регистру кодировки ANSI.

Как с помощью указанных выше функций производить поиск искомой фразы в файлах без учёта кодировки и регистра

Сами по себе указанные функции поиск не осуществляют, они лишь выполняют необходимые для такого поиска преобразования. Предположим что у нас в виде переменной есть фраза которую мы хотим найти в файлах. Для того чтобы не производить преобразования файлов там где это не нужно(то-есть избежать применение функции convToAnsi) для начала проверим поисковую фразу функцией isContainsRussianLetters, если эта функция возвращает true то преобразование текст файлов и поисковой фразы требуется, а если возвращает false, по осуществляем поиск без преобразования. Получить текст файлов в переменную в PHP можно используя функцию file_get_contents. А для того чтобы произвести поиск фразы в тексте файлов можно использовать функцию strpos с ей последующим сравнением с !== false, выполнение такого сравнения означает, что искомая фраза найдена в тексте файла.

Вы так же можете прочитать следующие статьи:

  • Установка и настройка Squid на CentOs 7(версия squid 3.5.20)
  • Хостинг FirstByte.Ru отзывы — внимание мошенники и негодяи! Опасайтесь!
  • Добавление файла в медиабиблиотеку bitrix средствами API
  • Парсер количества покупок товара по Id для wildberries на PHP.
  • Реализация JSON stringify и parse для старых версий браузеров
  • Как разделить коммунальные платежи в частном доме
  • Виды технологий для определения номера телефона у посетителей сайта.
  • Представительство в суде
  • Как уволиться без отработки
  • Получить(присвоить) результат выполнения var_dump php в переменную или сохранить в файл.
  • Заявление с уточнением вопросов по ведению видео съемки в автомобиле ГИБДД
  • Функция на PHP проверки номера телефона и приведения его к заданному формату.

В YouTube есть достаточно популярный канал, а ещё он есть по другой ссылке — Danatar. Вернее В YouTube есть несколько каналов данного автора, Вы можете перейти по ссылке и посмотреть какие классные видео снимает Danatar. Как с использованием Bitrix ORM связать несколько(три или более) таблиц.

Источник

ctype_alpha

Проверяет, все ли символы в переданной строке text являются буквенными. В стандартной локали C буквами являются только [A-Za-z] и ctype_alpha() эквивалентна (ctype_upper($text) || ctype_lower($text)) , если $text состоит всего из одного символа, но в других языках есть буквы, которые не считаются ни верхним, ни нижним регистром.

Список параметров

Замечание:

Если передано целое число ( int ) в диапазоне между -128 и 255 включительно, то оно будет обработано как ASCII-код одного символа (к отрицательным значениям будет прибавлено 256 для возможности представления символов из расширенного диапазона ASCII). Любое другое целое число будет обработано как строка, содержащая десятичные цифры этого числа.

Начиная с PHP 8.1.0, передача нестроковых аргументов устарела. В будущем аргумент будет интерпретироваться как строка вместо кода ASCII. В зависимости от предполагаемого поведения аргумент должен быть приведён к строке ( string ) или должен быть сделан явный вызов функции chr() .

Возвращаемые значения

Возвращает true , если каждый символ в строке text является буквой из текущей локали, false в противном случае. При вызове с пустой строкой результатом всегда будет false .

Примеры

Пример #1 Пример использования ctype_alpha() (с использованием локали по умолчанию)

$strings = array( ‘KjgWZC’ , ‘arf12’ );
foreach ( $strings as $testcase ) if ( ctype_alpha ( $testcase )) echo «Строка $testcase состоит только из букв.\n» ;
> else echo «Строка $testcase состоит не только из букв.\n» ;
>
>
?>

Результат выполнения данного примера:

Строка KjgWZC состоит только из букв. Строка arf12 состоит не только из букв.

Смотрите также

  • ctype_upper() — Проверяет наличие символов в верхнем регистре
  • ctype_lower() — Проверяет наличие символов в нижнем регистре
  • setlocale() — Устанавливает настройки локали

Источник

Читайте также:  jQuery DatePicker
Оцените статью