• Как преобразовать tsv ответ яндекс директ api в массив?

    @GarrySeldon
    class TsvParce 
    {
        private $totals;
        private $data;
        private $headers;
        private $str;
    
        public function __construct($str)
        {
            $this->str = $str;
            $this->parce();
            return $this;
        }
    
        public function getTotal()
        {
            return $this->totals;
        }
    
        public function getData()
        {
            return $this->data;
        }
    
        public function getHeaders()
        {
            return $this->headers;
        }
         
        public function parce()
        {
            if (!$this->str || strlen($this->str) < 10) {
                return $this;
            }
            $lines = explode(PHP_EOL, $this->str);
            $count = count($lines);
            $lastLine = $count - 2;
            $totalLine = $lines[$lastLine];
            $this->parceTotal($totalLine);
            $this->headers = explode("\t", $lines[1]);
            unset($lines[0], $lines[1], $lines[$lastLine], $lines[$count - 1]);
            if (count($this->headers) > 0) {
                $this->parceData($lines);
            }
            return $this;
        }
    
        private function parceData($lines)
        {
            $countHeader = count($this->headers);
            $data = [];
            foreach ($lines as $line) {
                $row = explode("\t", $line);
                if (count($row) == $countHeader) {
                    $data[] = array_combine($this->headers, $row);
                }
            }
            $this->data = $data;
        }
    
        private function parceTotal($line)
        {
            if (preg_match('/Total rows: (\d+)/', $line, $match)) {
                $this->totals = $match[1];
            }
        }
    }
    
    //Пример использования
        $tsv = new TsvParce($data);
        print_r($tsv->getTotal());
        print_r($tsv->getHeaders());
        print_r($tsv->getData());
    Ответ написан
    Комментировать
  • Какой смысл в использовании шаблонизаторов?

    @GarrySeldon
    Шаблонизаторы на мой взгляд абсолютно не нужная вещь, но при этом шаблоны (представление), разумеется нужны. Какие есть плюсы при использовании шаблонизаторов:
    1. Более "красивый" и лаконичный код. Вместо <?= $var ?> мы пишем {{$var}}. Честно говоря не вижу тут особой разницы. Если нужен лаконичный код лучше применять как в Yii1/2 виджеты. Передал данные, сделал нужные настройки и у тебя готовая таблица с сортировкой и всеми делами, а не целое полотно кода.
    2. Дисциплинирует разработчика и не даёт ему делать SQL запросы из шаблона. Очень сомнительный аргумент, если руки кривые всегда можно что-то сделать не так.
    На этом плюсы и закончились переходим к минусам:
    1. Тратиться много ресурсов. PHP нужно открыть, прочитать и проанализировать шаблон. С обычными шаблонами там несколько проще.
    2. Чтобы не делать эту ресурсоемкую операцию каждый раз шаблонизатор кэширует результаты своей деятельности и тут получаем второй минус - приходится постоянно чистить кэш. При этом кэш не отменяет запросы в БД и остальные вычислительные процессы, которые совершаются в модели.
    3. Надо учить дополнительный синтаксис.
    4. Дополнительная сложность порождает дополнительные проблемы. Неоднократно встречал сайты, где иногда, данные не корректно скэшировались и сайт не работал.
    Ответ написан
    Комментировать
  • Сравнение кириллических строк функцией strcasecmp в php?

    @GarrySeldon
    if (preg_match('/'.$str1.'/iu', $str2)) {
    echo 'Равны!';
    }
    Ответ написан
    Комментировать
  • Почему российские заказчики в большинстве своем не воспринимают минималистичный веб-дизайн?

    @GarrySeldon
    Красота - это субъективное понятие и то, что красиво для одного человека, народа, эпохи необязательно будет красиво для других. Не зря существует русская-народная поговорка: "На вкус и цвет - одни враги." Можно вспомнить обнаженные натуры живописцев эпохи возрождения - сейчас нам они кажутся слишком упитанными. А блюдца за нижней губой, в некоторых диких племенах. У них считается это красиво. В веб-дизайне действуют те же правила. Я думаю, что не не надо обвинять людей в "колхозном" вкусе только потому, что они не принимают какое-то направление, которое сейчас модно на западе. Тем более что всё развивается по спирали и быть может заказчик требует того, что вот-вот станет супермодным. Я хоть и не дизайнер, но участвую в разработке сайтов.
    Ответ написан
    1 комментарий