Как найти кириллицу в таблице 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;

Этот метод:

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

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

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

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

Добавить комментарий