Некоторые специальные символы сложно использовать в строках, поскольку их не просто вводить с клавиатуры. Однако существуют ASCII коды, для работы с которыми PHP имеет две функции:
- chr() - преобразовывает ASCII-код в соответствующий символ.
- ord() - возвращает ASCII-код символа.
Данные функции можно использовать, например для защиты адресов электронной почты. Поскольку спамеры, будь они не ладны, пишут программы для поиска на страницах определенных структур, адреса электронной почты. Это может помочь уберечься от части спама. Суть защиты заключается в использовании кодов символов HTML для представления адресов, из-за чего спамерам становится сложнее найти данные электронной почты.
Приведенный ниже код принимает в качестве параметра адрес электронной почты, в формате email@domain.ru и возвращает mailto:email@domain.ru, однако в формате HTML. Например, буква m в mailto: имеет ASCII-код 109; следовательно, $#109; обозначает m. Для выполнения необходимых действий задается цикл, проходящий по всем символам строки. Чтобы реализовать эту процедуру, необходимо определить длину строки при помощи функции strlen(). После этого функция ord() расчитывает ASCII-коды всех символов, которые впоследствии используются для построения HTML-кода.
Код
<?php
function protectMail($s) {
$result = '';
$s = 'mailto:' . $s;
for ($i = 0; $i < strlen($s); $i ++) {
$result .= '' . ord(substr($s, $i, 1)) . ';';
}
return $result;
}
echo '<a href="' . protectMail('email@domain.ru') . '">E-Mail</a>';
?>