LIKE_ESCAPE() │ WP 2.5.0
Функция LIKE_ESCAPE() устарела с версии 4.0.0. Она больше не поддерживается и может быть удалена в будущих обновлениях. Вместо неё рекомендуется использовать wpdb::esc_like().
Ранее функция использовалась для обработки строк перед их поиском в базе данных, но была плохо задокументирована и не работала как следует.
Возвращаемое значение
Тип: строка. Это текст, безопасный для использования в запросах с LIKE.
Использование
like_escape( $text );
Параметры
$text(строка) (обязательный) — текст, который нужно обработать.
Примеры
Пример 1: Использование wpdb::esc_like()
Этот пример показывает, как сравнить ссылку комментатора с ссылками комментаторов, помеченными как спам:
// Обработка переданной ссылки
$url = parse_url( $suspicious_link );
// Удаляем "http://" и параметры URL
if ( isset( $url['path'] ) ) {
$link = $url['host'] . $url['path'];
} else {
$link = $url['host'];
}
// Подготовка для использования в аргументе LIKE
$link = $wpdb->esc_like( $link );
// Добавляем знаки процента к концам строки для поиска
$link = '%' . $link . '%';
// Создаем строку запроса с % как плейсхолдерами
$sql = "
SELECT COUNT(*)
FROM $wpdb->comments
WHERE (comment_content LIKE %s OR comment_author_url LIKE %s)
AND comment_approved = 'spam'
";
// Подготовка строки с помощью $wpdb->prepare()
$sql = $wpdb->prepare( $sql, $link, $link );
// Отправляем запрос
$matching_comments = $wpdb->get_var( $sql );
echo $matching_comments . ' спам-комментариев найдено с этой ссылкой.';
Пример 2: Обработка аргумента LIKE в SQL-запросах
Этот пример показывает, как правильно обработать аргумент LIKE в SQL-запросах.
// Подготовка для использования в аргументе LIKE
$link = like_escape( $link );
// Также нужно очистить строку
$link = esc_sql( $link );
// Добавляем знаки процента к концам строки для поиска
$link = '%' . $link . '%';
// Ищем спам-комментарии с похожей ссылкой в тексте комментария или в ссылке автора
$spammy = $wpdb->query( "
SELECT comment_approved
FROM $wpdb->comments
WHERE (
comment_content LIKE '$link' OR comment_author_url LIKE '$link'
)
AND comment_approved = 'spam'
LIMIT 1;"
);
// Если $spammy == 1, то подозрительная ссылка найдена в комментариях со спамом
Примечания
- Используйте
wpdb::esc_like()для безопасности и правильной работы с SQL-запросами.
Изменения
- С версии 2.5.0 введена. Устарела с версии 4.0.0. Используйте
wpdb::esc_like().
Код функции LIKE_ESCAPE()
function like_escape($text) {
_deprecated_function( __FUNCTION__, '4.0.0', 'wpdb::esc_like()' );
return str_replace( array( "%", "_" ), array( "%", "_" ), $text );
}
Связанные функции
esc_sql()get_boundary_post()get_children()get_page_by_title()get_pages()get_posts()get_queried_object()get_queried_object_id()get_query_var()have_posts()query_posts()rewind_posts()set_query_var()setup_postdata()wp()wp_get_recent_posts()WP_Query()wp_reset_query()wp_reset_vars()
Эта статья должна помочь вам понять, как правильно использовать функции для обработки SQL-запросов и избегать устаревших методов.