Архивы рубрик: PHP

PHP Парсер аргументов командной строки / Command line arguments parser

Простой парсер для разбора аргументов командной строки в php. Реализует паттерн «одиночка»   Как с ним работать Вызываем из консоли скрипт: 1$ php script.php –cli=clientname –engine=google –opt -f  arg

Enum в php. Жесткая типизация перечислений

Все началось с того, что мне не понравилось что я не могу жестко типизировать входные параметры в методы моих классов, а именно типизировать константы. Из-за отсутствия enum в php (сейчас я говорю о php 5) мы сталкиваемся с неудобными вещами – мы храним данные в массивах с комментариями «не изменять», «это не трогать», но это [...]

Баг? Фича? sizeof / count

Обнаружил любопытную вещь, точнее из-за неработоспособности скрипта напал на след непонятной для меня вещи: 1234567    $a = new stdClass();     echo sizeof($a)."\r\n";     // Вернет 0     $a = array();     echo sizeof($a)."\r\n";     // Вернет 1 Так что мой вам совет – аккуратнее с объектами!

Представление числа в любой системе исчисления. base 62, 36, 64 encode decode. Сокращение урла или ссылки

Здравствуйте, мои дорогие! =) 12345678910111213141516171819202122function baseNum_encode($val, $chars=’0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’) {     // не можем использовать числа больше чем 2^31-1 = 2147483647     $base = strlen($chars);     $str = »;     do {     $i = $val % $base;     $str = $chars[$i] . $str;     $val = ($val – $i) [...]

Кодирование числа в 62-чную систему исчисления. base62_encode, base62_decode

1234567891011121314151617181920function base62_encode($val, $base=62, $chars=’0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’) {     // can’t handle numbers larger than 2^31-1 = 2147483647     $str = »;     do {         $i = $val % $base;         $str = $chars[$i] . $str;         $val = ($val – $i) / $base;   [...]

Закрыть все открытые теги php

1234567891011121314151617181920212223242526function close_dangling_tags($html){   //сначала берем все открытые теги   preg_match_all("#<([a-z]+)( .*)?(?!/)>#iU",$html,$result);   $openedtags=$result[1];     // после все закрытые   preg_match_all("#</([a-z]+)>#iU",$html,$result);   $closedtags=$result[1];   $len_opened = count($openedtags);   # все теги закрыты  if(count($closedtags) == $len_opened){     return $html;   }     $openedtags = array_reverse($openedtags);   # close tags  for($i=0;$i < $len_opened;$i++) {   [...]

Приведение типов данных php, array to object, object to array. Интересный баг php

Приведение типов в php делается просто: $newTypeVar = (type)$var; Ну или конкретные примеры: 12$array = (array)$object; $object = (object)$array; Ну, а теперь о багах, возникающих при приведении типов: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859    // Объявляем массивчик     $array = array(’11′ => ‘one’, 22 => ‘two’);         print_r ($array);     /*       [...]