Записки web-программиста

Личный блог программиста php

 
16 Ноябрь'11
2

Изменение регистра символов

Необходимо было проверить строку на наличие слов, написанных в верхнем регистре и заменить их на слово в нижнем регистре, но с заглавным первым символом.
Функция ctype_upper не подошла, т.к. плохо работает с кириллицей.

Написал такую функцию:

function lower($str, $charset='UTF-8')
{
	//	Разбиение строки.
	$tmp = explode(' ', $str);
 
	if (is_array($tmp) && 0 < ($count = count($tmp)))
	{
		for ($i=0;$i<$count;$i++)
		{
			/**
			 * Для определения кириллицы используется тождественное сравнивание,
			 *  т.к. ctype_upper работает некорректно.
			 * 
			 */
			if ($tmp[$i] !== mb_strtolower($tmp[$i], $charset))
			{
				$tmp[$i] = mb_convert_case(mb_strtolower($tmp[$i], $charset), MB_CASE_TITLE, $charset);
			}
		}
	}
	$str = implode(' ', $tmp);
	return $str;
}

Использовать можно так:

$str = 'Записки WEB-ПРОГРАММИСТА';
echo lower($str); // Записки Web-Программиста
03 Октябрь'11
0

Условия в if

В стандартах кодирования в разделе "форматирование блоков if then else" написано, что при сравнении константы необходимо ставить слева, т.е.

if (1 == $var)

Сегодня задумался по поводу сравнения с булевыми константами.
Как лучше писать

if (true === $var)

или использовать восклицательный знак (!)

if (!$var)
29 Июнь'11
0

Загрузка файлов с помощью PHP и cURL

При написании приложения для работы с vkontakte.ru Ads API потребовалось загружать данные на их сервер.
С помощью cURL и PHP делается это так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
< ?php
$ch = curl_init();
// URL для обработки.
curl_setopt($ch, CURLOPT_URL, $url);
// Не отправлять заголовки в браузер
curl_setopt($ch, CURLOPT_HEADER, false);
// Название браузера.
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)");
// Возвращать содержимое.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Заголовки для запроса.
$headers = array(
	'Expect:',
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// Сообщаем, что это POST-запрос.
curl_setopt($ch, CURLOPT_POST, true);
// Данные POST-запроса.
$post = array(
	'file' => '@/home/izra/file.ext'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
 
// Получение ответа.
$return = curl_exec($ch);
// Закрытие соединения.
curl_close($ch);
?>
29 Июнь'11
2

exit(); vs die();

Почему-то всегда думал, что между die(); и exit(); есть какая-то небольшая разница. Но никогда не думал проверить это. Как оказалось разницы между этими конструкциями нет вообще.

Скорее всего die(); существует для того, чтобы программисты, работающие с Perl могли более легко перейти на PHP.

02 Февраль'11
1

MySQL. Неизвестная пунктуация.

На днях столкнулся с непонятной ошибкой MySQL. Сервер сообщал, что в запросе на вставку записи (с другими не пробовал) допущена ошибка "Неизвестная пунктуация".

Ошибка появлялась в тот момент когда вставлялось 2 и более записи и в какой-либо из строк содержится точка с запятой (;). Дамп заливался через консоль, phpmyadmin и Sypex Dumper Lite 1.0.8.

Причина в func_overload библиотеки mbstring. Для корректной работы оно должно быть отключено.

30 Сентябрь'10
3

WebAsyst

Сегодня пришлось поработать с WebAsyst. Ну и херня же эта система.
А пришлось мне переносить его с одного сервера на другой.

Сначала оказалось, что все таблицы, кроме таблиц с префиксом "CS_" в нижнем регистре, а в скриптах используется в верхнем регистре.

Потом я искал место, где в этой системе можно прописать данные для базы данных.

Потом оказалось, что логин и пароль от панели администрирования клиент не знает.
Подробнее...

10 Август'10
2

Говнокод: Логика

1
2
3
4
5
6
7
8
9
10
11
function Logika($f)
{
        $t=($f=true) ? true : false
        switch($t)
        {
              case true:  $return=1; break;
              case false: $return=0; break;
              default: $return; break;
        }
        return $return;
}
09 Август'10
8

php программистам!

Во время поиcка помощника, провел достаточно большое число собеседований по вакансии php-программист. Люди приходили разные. Но почти все знают минимум. Да даже не минимум. Знания ниже того уровня, который требуется для разработки простейшего web-сайта.
Подробнее...

01 Май'10
6

e-planet.ru — негативный отзыв

e-planet.ru
Так уж сложилось, что мне пришлось делать сайт для одного клиента. Сайт сделан, клиентом принят. Осталось подписать все акты и перенести на хостинг площадку клиента.

Размещается клиент на серверах хостинг-провайдера E-Planet.
Подробнее...

06 Апрель'10
1

Где же ты, программист на PHP

Не успев закрыть вакансию приходится снова ее открывать. Последний программист был с треском уволен 1-го апреля. Нет, это не была шутка, просто так легли карты.

И теперь мне снова нужен работник. А требования-то совсем маленькие. На такую должность, с такими требованиями, программисты должны слетаться как мухи на сами знаете что.

Очень большие шансы у кандидата, который знает, что такое PHP не понаслышке, представляет как пользоваться LEFT/RIGHT/INNER JOIN, GROUP BY и знает слово HAVING. Ну и, естественно, работал с шаблонизатором Smarty.