Метка: кириллица

Как найти кириллицу в таблице WordPress

Всем привет.

Столкнулись с немного нетривиальной задачей: необходимо было найти в базе данных сайта WordPress все записи с кириллицей.

Для этого вот нашли такое решение:

<?php
// Подключение к WordPress
require_once('wp-load.php'); // путь к вашему wp-load.php

global $wpdb;

// Таблица и поля для проверки
$table = 'таблица';
$fields = ['поле_таблицы', 'еще_одно_поле_если_нужно'];

// Получаем все строки
$rows = $wpdb->get_results("SELECT * FROM $table");
$counter = 0;
foreach ($rows as $row) {
	foreach ($fields as $field) {
		$value = $row->$field;
		// Проверка на кириллицу с игнорированием эмодзи
		// if (preg_match('/[А-Яа-яЁё]/u', $value)) {
		// 	$counter++;
		// 	echo "Строка ID {$row->comment_ID}, поле {$field} содержит кириллицу: " . htmlspecialchars($value) . "<br>";
		// }
		
		$value_unserialize = maybe_unserialize($value);
		if (is_array($value_unserialize)) {
			array_walk_recursive($value_unserialize, function($v) {
				if (is_string($v) && preg_match('/[А-Яа-яЁё]/u', $v)) {
					$counter++;
					echo "Содержит кириллицу: " . htmlspecialchars($v) . "<br>";
				}
			});
		} elseif (is_string($value_unserialize) && preg_match('/[А-Яа-яЁё]/u', $value_unserialize)) {
			$counter++;
			echo "Содержит кириллицу: " . htmlspecialchars($value_unserialize) . "<br>";
		}
	}
}
echo 'Таблица для проверки: '.$table.'<br/>';
echo 'Найдено строк с кириллицей: '.$counter;

Этот метод:

  • Игнорирует эмодзи.
  • Проверяет всю строку или массив.
  • Находит реальную кириллицу, а не случайные байты.

С этим скриптом вы можете перебрать как одно поле таблицы, так и все, которые вам нужны.

Также в конце работы скрипта указывается сколько было найдено записей с кириллицей и какие там данные находятся.

Надеюсь, что пригодится кому-то еще, кроме нас этот скрипт!

Валидация ввода украинских и русских символов в jQuery

Иногда требуется ограничить ввод символов в текстовое поле так, чтобы пользователь мог вводить только буквы украинского и русского алфавитов. Это может быть полезно, например, для форм с именами и фамилиями, где нежелательны цифры, латинские символы или специальные знаки. Давайте рассмотрим, как с помощью jQuery можно легко реализовать такую валидацию.

Основная идея

С помощью метода .keyup() мы можем отслеживать события, происходящие при каждом нажатии клавиши в целевом поле ввода. Это позволит контролировать и корректировать содержимое поля в реальном времени. Для удаления недопустимых символов мы будем использовать регулярное выражение, которое оставит в поле только буквы кириллицы, включая специфические для украинского и русского алфавитов.

Код валидации

Для реализации валидации создайте следующий скрипт на JavaScript с использованием jQuery:

$("input#billing-first_name, input#billing-last_name").keyup(function() {
    $(this).val($(this).val().replace(/[^а-яА-ЯїЇєЄіІёЁ ]/g, ""));
});

Объяснение работы кода

  1. Выбор полей: В данном примере мы выбираем два поля с идентификаторами billing-first_name и billing-last_name. Это могут быть, например, поля для ввода имени и фамилии в форме.
  2. Отслеживание ввода: Используя метод .keyup(), мы подключаем функцию, которая будет выполняться каждый раз, когда пользователь отпускает клавишу. Это позволяет применять валидацию по мере ввода текста.
  3. Замена символов: Метод .replace() используется для замены всех неподходящих символов на пустую строку. Регулярное выражение /[^а-яА-ЯїЇєЄіІёЁ ]/g определяет:
    • ^ — отрицание, т.е. все символы, не соответствующие выражению;
    • а-яА-Я — русские буквы (и в нижнем, и в верхнем регистре);
    • їЇєЄіІ — буквы, уникальные для украинского языка;
    • ёЁ — буква «ё» в русском алфавите;
    • — пробел (для удобства, если нужно вводить фамилию, состоящую из двух частей).
    Всё, что не попадает под эти символы, будет заменено на пустую строку, т.е. удалено из поля.

Применение и возможные изменения

Такой код можно легко адаптировать для других полей или расширить список символов, если необходимо. Например, если вы хотите, чтобы поля принимали и латинские буквы, можно добавить их в регулярное выражение. Вот пример для кириллицы и латиницы:

$("input#billing-first_name, input#billing-last_name").keyup(function() {
    $(this).val($(this).val().replace(/[^а-яА-ЯїЇєЄіІёЁa-zA-Z ]/g, ""));
});

Преимущества и ограничения метода

Преимущества:

  • Простота и лёгкость внедрения. Несколько строк кода обеспечивают базовую валидацию.
  • Валидация происходит на стороне клиента, что улучшает UX (пользовательский опыт), так как пользователь сразу видит результат.

Ограничения:

  • Клиентская валидация уязвима, так как её можно обойти при отключённом JavaScript. Поэтому, если важна надёжность, следует продублировать валидацию и на сервере.
  • Скрипт работает только при наличии jQuery, поэтому нужно убедиться, что он подключен к проекту.

Заключение

Использование jQuery для валидации полей ввода на основе символов кириллицы — это простой и эффективный способ ограничить ввод только нужными символами. Благодаря регулярным выражениям и событиям jQuery вы можете гибко адаптировать проверку для самых разных форм и языков.