Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую! eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

antispambot()WP 0.71

Изменяет символы email адреса на HTML сущности, чтобы ваше мыло не попало спамботам.

Хуков нет.

Возвращает

string. Измененный email адрес.

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

antispambot( $emailaddy, $hex_encoding );
$emailaddy(строка) (обязательный)
Email адрес.
$hex_encoding (число)
0 - позволяет только кодирование с цифрами ({).
1 - кодирует в шестнадцатеричной системе (hex) кодирование (&x7B;).
По умолчанию: 0

Примеры

#1 Закодируем email

Изменим email адрес, и закроем его от спамботов, который собирают адреса из кода.

echo antispambot('mymail@example.com');

// В коде получим: mymail@gmail.com

// А на экране: mymail@gmail.com

Список изменений

С версии 0.71 Введена.
С версии 7.1.0 Masquerades multibyte characters.

Код antispambot() WP 7.1

function antispambot( $email_address, $hex_encoding = 0 ) {
	$obfuscated     = '';
	$at             = 0;
	$end            = strlen( $email_address );
	$invalid_length = 0;

	while ( $at < $end ) {
		$was_at = $at;
		if (
			0 === _wp_scan_utf8( $email_address, $at, $invalid_length, null, 1 ) &&
			0 === $invalid_length
		) {
			break;
		}

		$character_length = $at - $was_at;

		if ( $character_length > 0 ) {
			$character = substr( $email_address, $was_at, $character_length );

			switch ( rand( 0, 1 + $hex_encoding ) ) {
				case 0:
					$code_point  = mb_ord( $character );
					$obfuscated .= "&#{$code_point};";
					break;

				case 1:
					$obfuscated .= $character;
					break;

				case 2:
					for ( $i = 0; $i < $character_length; $i++ ) {
						$hex_value   = bin2hex( $character[ $i ] );
						$obfuscated .= "%{$hex_value}";
					}
					break;
			}
		}

		if ( 0 !== $invalid_length ) {
			$obfuscated .= substr( $email_address, $at, $invalid_length );
		}

		$at += $invalid_length;
	}

	return str_replace( '@', '&#64;', $obfuscated );
}
1 комментарий