Полезное свойство функции substr в PHP
Функция substr служит для взятия подстроки, синткасис у нее следующий:
string substr ( string string, int start [, int length] )
Допустим, вам нужно отрезать последний символ, знатоки Javascript или Си напишут примерно следующее:
$s = 'some string1'; $s = substr($s,0,strlen($s)-1); //some string
пока терпимо, хотя код уже явно громоздкий и трудный для понимания, задача усложняется если нужно получить несколько последних символов в строке:
$s = 'some string123'; $s = substr($s,strlen($s)-4); //123
понять что делает этот код довольно трудно, несмотря на то что его назначение тривиальнейшее.
К счастью в PHP в substr можно использовать ОТРИЦАТЕЛЬНЫЕ ЗНАЧЕНИЯ для стартового символа и длинны:
//пример первый $s = 'some string1'; $s = substr($s,0,-1); //some string //пример второй $s = 'some string123'; $s = substr($s,-3); //123
Кака видно, в этом случае код читается на порядок проще. Ничего подобного нет ни в Си ни в JavaScript, а жаль.
Вредные советы PHP программистам
- делайте функции как можно длиннее. Прошли времена глупых и тупых программистов, если комуто в падлу прочитать код на пятисяти скринах - разжаловать его в грузчики!
- побольше глобальных перемнных. Глобальные переменные жрут память - ну и фиг с ней, пусть клиент купит еще планочку - не разорится
- в жопу комментарии. Кому надо сам разберется что к чему!
- у функций должно быть побольше аргументов. И функции должны возвращать как можно больше полезной информации - те кому прийдется разбираться в вашем коде будут счастливы.
- чем больше листинг тем круче. Если в файле листинга меньше десяти тысяч строк кода - это и не листинг вовсе.
Как сохранить изображение в ico
Потребовалось сделать favicon.ico, да как назло никакого софта для сохранения в ico не оказалось под рукой, даже премного-мной-уважаемый Photoshop не умеет сохранять в ico, пришлось импровизировать.
В PHPThumb обнаружил отличную функцию для сохранения GD ресурса в ICO. На основе этой функции сделал собственный мааааааленький скриптик для преобразования графических файлов в ico. В общем, инструмент получился действительно полезный - выкладываю его для общего пользования. Здесь исходник.
Поддерживает GIF, PNG и BMP.
Upd: для этих же целей есть офигительный сервис favicon.ru
Upd2: Бесплатный конкурент Фотошопа - Gimp прекрассно умеет сохранять в ico.
Upd3: Как оказалось гимп всё-же сохряняет ico с ошибкой - получается фигня, по крайней мере в Windows версии.
PHP заменяет пробелы в именах переменных на _
Похоже, что эта пагубная традиция идет со времён когда переменные, передаваемые через GET и POST превращались в глобальные переменные. Eсли поле формы описано как <input type="text" name="Last Name"> то в PHP оно преобразуется в $_POST['Last_Name'].
Довольно неприятное поведение, но это факт.


