WordPress как на ладони
wordpress jino

like_escape() WP 2.5

Запрещена с версии 4.0.0. Больше не поддерживается и может быть удалена в следующих версиях. Используйте wpdb::esc_like() .

С версии 4.0 считается устаревшей! Используйте взамен wpdb::esc_like(). Подготавливает строку для использования в LIKE выражении SQL запроса.

Все описанное здесь полностью справедливо для wpdb::esc_like(). Грубо говоря, вам просто нужно заменить все like_escape() на  $wpdb->esc_like().

Функция не защищает строку от SQL инъекций и строка как и прежде должна быть отдельно обработана функциями $wpdb->prepare() или esc_sql().

Функция экранирует знак процента (%) и нижнее подчеркивание (_), т.к. они имеют особое значение в LIKE аргументе запроса.

Хуков нет.

Возвращает

Строку. Подготовленную для использования в значении LIKE в SQL запросе.

Использование

$like = like_escape( $string );
$string(строка) (обязательный)
Часть SQL запроса, которая будет использоваться для поиска с помощью команды LIKE.

Примеры

#1 Пример с $wpdb->esc_like который считается правильным с версии WordPress 4.0

Этот пример, показывает как сравнить указанный УРЛ комментатора с УРЛами комментаторов которые помечены как спам:

// Обрабатываем переданный УРЛ
$url = parse_url( $suspicious_link );

// Удаляем "http://" и УРЛ параметры
if ( isset( $url['path'] ) ) {
	$link = $url['host'] . $url['path'];
} else {
	$link = $url['host'];
}

// подготавливаем для использования в LIKE аргументе
$link = $wpdb->esc_like( $link );

// добавляем знаки процента на концы аргумента поиска
$link = '%' . $link . '%';

// Создаем строку запроса с заполнителями % для замены из в $wpdb->prepare()
$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 . ' spam comments found with this link.';

#2 Демонстрация обработки LIKE аргумента в SQL запросах

В этом примере подробно показано как следует обрабатывать LIKE аргумент SQL запроса.

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

// $match = подозрительная ссылка
$url = parse_url($match);

// убираем "http://" и любые параметры запроса
array_key_exists('path', $url) ? $link = $url['host'] . $url['path'] : $link = $url['host'];

// подготавливаем для использования в 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 тогда подозрительная ссылка найдена в спам комментариях

Код like escape: wp-includes/deprecated.php VER 4.9.1

<?php
function like_escape($text) {
	_deprecated_function( __FUNCTION__, '4.0.0', 'wpdb::esc_like()' );
	return str_replace( array( "%", "_" ), array( "\\%", "\\_" ), $text );
}

Cвязанные функции

Из метки: query (запрос)

Еще из раздела: SQL

Бдсм атрибуты по привлекательным расценкам

бдсм атрибуты по привлекательным расценкам

www.eroticmir.ru

like_escape Комментариев нет

    Здравствуйте, !

    Ваш комментарий
    Предпросмотр