|
оказывается очень по-
лезной.
Листинг 12.2. Программа: печать всей таблицы символов
// Сначала создаем массив того, что мы собираемся выводить,
// не заботясь о форматировании (дизайне) информации
for($i=0,$x=0; $x<16; $x++) {
for($y=0; $y<16; $y++) {
$Chars[$x][$y]=array($i,chr($i));
$i++;
}
}
// Теперь выводим накопленную информацию, используя идеологию
// вставки участков кода в HTML-документ
?>
=$Chars[$x][$y][0]?>:
Часть IV. Стандартные функции PHP 210
=$Chars[$x][$y][1]?>
|
}?>
}?>
?>
int ord(char $ch)
Эта функция, наоборот, возвращает код символа в $ch. Например, ord(chr($n))
всегда равно $n — конечно, если $n заключено между нулем и числом 255.
int strrpos(string $where, char $what)
Данная функция, хотя и похожа внешне на strpos() (см. ниже), несет несколько
иную нагрузку. Она ищет в строке $where последнюю позицию, в которой встречает-
ся символ $what (если $what — строка из нескольких символов, то выявляется
толь-
ко первый из них, остальные не играют никакой роли — обратите на это особое
вни-
мание!). В случае, если искомый символ не найден, возвращается false (см.
замечание по этому поводу для strpos()). Вообще, могу сказать, что функция
strrpos() применяется очень редко. Слишком уж она не универсальна.
Функции отрезания пробелов
По поводу философии написания программ, которые интенсивно обрабатывают дан-
ные, вводимые пользователем (а именно такими программами является большинство
сценариев) есть очень правильное изречение: ваша программа должна быть макси-
мально строга к формату выходных данных и максимально лояльна по отношению ко
входным данным. Это означает, что, прежде чем передавать полученные от
пользова-
теля строки куда-то дальше, — например, другим функциям, — нужно над ними не-
много поработать. Самое простое, что можно сделать — это отрезать начальные и
концевые пробелы.
Иногда трудно даже представить, какими могут быть странными пользователи, если
дать им в руки клавиатуру и попросить напечатать на ней какое-нибудь слово. Так
как клавиша пробела — самая большая, то пользователи имеют обыкновение нажи-
мать ее в самые невероятные моменты. Этому способствует также и тот факт, что
символ с кодом 32, обозначающий пробел, как вы знаете, на экране не виден. Если
программа не способна обработать описанную ситуацию, то она, в лучшем случае
после тягостного молчания отобразит в браузере что-нибудь типа "неверные
входные
данные", а в худшем — сделает при этом что-нибудь необратимое.
Глава 12. Строковые функции 211
Между тем, обезопасить себя от паразитных пробелов чрезвычайно просто, и разра-
ботчики PHP предоставляют нам для этого ряд специализированных функций. Не
волнуйтесь о том, что их применение замедляет программу. Эти функции работают с
молниеносной скоростью, а главное, одинаково быстро, независимо от объема пере-
данных им строк. Конечно, я не призываю к пароноидальному применению функций
"отрезания" на каждой строчке программы, но в то же время, если есть хоть
1%-ная
возможность того, что строка может содержать лишние пробелы, следует без
колеба-
ний от них избавляться. В конце концов, отсекать пробелы один раз или тысячу —
все равно, а вот не отрезать совсем и отрезать однажды — большая разница.
Кстати,
если отделять нечего, описанные ниже функции мгновенно заканчивают свою работу,
так что их вызов обходится совсем дешево.
string trim(string $st)
Возвращает копию $st, только с удаленными ведущими и концевыми пробельными
символами. Под пробельными символами я здесь и далее подразумеваю: пробел " ",
символ перевода строки \n, символ возврата каретки \r и символ табуляции \t.
На-
пример, вызов trim(" test\n ") вернет строку "test".
Эта функция используется очень широко. Ст
|
|