Шпаргалка RegExp (регулярные выражения)

No Picture

Справка по составлению регулярных выражений

[abc] Один из символов a, b, c . Любой символ (…) Группировка (группа)
[^abc] Любой символ кроме a, b, c \s Пробельный символ (в т.ч. табуляция) (a|b) a или b
[a-z] Любой символ из диапазона \S Любой не пробельный символ a? Одна a или пусто
[a-zА-Я] Любой символ из диапазонов \d Любая цифра a* Ноль и более раз a
^ Начало строки \D Не цифра a+ Один и более раз a
$ Конец строки \w Буква (буквы, цифры, подчеркивание) a{3} 3 раза a
\A Начало текста \W Не буква (специальные символы) a{3,} 3 и более раз a
\z Конец текста \b Граница слова (начало или конец) a{3,5} От 3 до 5 раз a
\n Символ новой строки в Unix \r\n Символ новой строки в Windows \t Символ табуляции
\pL Буква (в т.ч. русская) в кодировке utf-8, используется с модификатором u

Модификаторы

i Регистронезависимость. Например «/a/i» ищет и a, и A.
U Инвертирует «жадность» (по умолчанию жадный, т.е. пытается захватить как можно большую строку, подходящую по условию).
u Использование кодировки utf-8 (для поиска русского текста например).
m Многострочный поиск.
s Символ . (точка) соответствует и переводу строки.
x Игнорировать пробелы. В этом случае пробелы нужно экранировать обратным слэшем \.

Сохранение настроек файла php

No Picture

Чето пропустил кучу тем которых хотел вам попалить. Жаль вообщем..

Но есть одна адски интересная тема. Хотите хранить очень просто настройки в исполняемом файле php?

Адски классная вешь, но не то о чем вы подумал, подумали наверно о массивах и тп, Помните как мы это делали в древние времена?

А тут бывает, что было бы не плохо таскать настройки в исполняемом файле. Бывает даже что базу в лом юзать из за трех записей.

А давайте попалим тему

<?php
//{"auth_pass":"12332123123123123"}
//{"60":100}

А ну че нигеры, ну че нигеры понимаете о чем я толкую? Ну планктон точно не знает.

Да да адские прогеры , или вернее сказать адски старые прогеры видали такую тему)

Теже самые прогеры сообразили как сейчас все дела раскидать и тп. Да тут можно посидеть подумать классно все сделать. обкидать.

Но для тех кто в танке держите набросок, с коленки, хотя только дам кусок, а то есть вурдалаки которые как свое возьмут…

class Config
{
  public $varible = false;

  public function __construct()
  {
        	if(is_file(__FILE__))
    {
      $fh	= fopen(__FILE__, 'r');
      $line1	= fgets($fh);
      $line2	= fgets($fh);

      fclose($fh);

      if(strpos($line1,'<?php') === 0 && strpos($line2,'//{"') === 0)
      {
        $config_string = trim(substr($line2, 2));

        if(strlen($config_string))
        {
          $this->varible = json_decode($config_string);
        }
      }
    }	
  }

Ну че круто да? А вот теперь сами думайте как сохранить, это в файле бугагагагаг….

Да не хотите думать скинте мне доЛлАры, я вам расскажу.

Nginx: закрыть сайт паролем

No Picture

С вами снова Тупой прогер. Появилась необходимость по закрывать сайтики на джинсах паролями.
Ну туда сюда вообщем надо.
Помните да как это было на Апаче?

Вообщем Апачи не юзаем все знают, что тупой прогер юзает только джинсы.
Так вот следовательно у нас не стоит htpasswd которая идет в пакете с httpd.
Но у нас по любому стоит openssl не так ли?
Вообще действия такие, создаем файл паролей. Кинте его куда хотите. Допустим пускай валяется в /etc/nginx

echo -n 'admin:' >> /etc/nginx/.htpasswd
openssl passwd -apr1 >> /etc/nginx/.htpasswd

Далее сделаем хитро зачем нам по всем конфигам таскать с собой барахло.
Создадим файл /etc/nginx/passwd.conf:

auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;

И его уже подключаем в конфигах:

location / { 
try_files $uri @main; 
include	/etc/nginx/passwd.conf;
}

Ну че выкусили дада юзайте.

service nginx reload - Для стариков
systemctl restart nginx.service - для новичков

Кто понял тот понял кто не понял тому не дано понять )

Bitrix: Заполнение товаров минимальной и максимальной ценой.

No Picture

Здаров обаригены.
Тут битриксы подкатывали просили цену сортирнуть и торговых предложений.
Туда сюда создать свойства и тп, там погуглите найдете. Задача у нас проставить цены у всех товаров.

Идете в админку и ищите там командную строку php,  в нее втыкаете такой код. Усе написано, проверено чики бамбонито.
Читать далее »

Wget Как скопировать все изображения с html + data-src

No Picture

Бывает надо слить какой то сайт, но wget сливает не все изображения. data-src например не возьмет.
Типо lazy load модная хрень.
Тогда нам надо получить список изображений, подогнать его и слить.

Первое получим список изображений из файлов *.html:

sed -n 's/.*data-src="\([^"]*\).*/\1/p' *.html

Второе если у нас все ссылки с доменом то все оке. Иначе модифицируем:

sed 's/^/https:\/\/сайт.ru\//'

Третье  и все вместе загружаем с сохранением директорий:

sed -n 's/.*data-src="\([^"]*\).*/\1/p' *.html | sed 's/^/https:\/\/сайт.ru\//' | xargs -P 5 wget -x {}
-x - сохраенения пути
-p - количество потоков

 

Получить название песни из потока

No Picture

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

<?php

/**
 * Please be aware. This gist requires at least PHP 5.4 to run correctly.
 * Otherwise consider downgrading the $opts array code to the classic "array" syntax.
 */
function getMp3StreamTitle($streamingUrl, $interval, $offset = 0, $headers = true)
{
    $needle = 'StreamTitle=';
    $ua = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36';

    $opts = [
            'http' => [
            'method' => 'GET',
            'header' => 'Icy-MetaData: 1',
            'user_agent' => $ua
        ]
    ];

    if (($headers = get_headers($streamingUrl))) {
        foreach ($headers as $h) {
            if (strpos(strtolower($h), 'icy-metaint') !== false && ($interval = explode(':', $h)[1])) {
                break;
            }
        }
    }

    $context = stream_context_create($opts);

    if ($stream = fopen($streamingUrl, 'r', false, $context)) {
        $buffer = stream_get_contents($stream, $interval, $offset);
        fclose($stream);

        if (strpos($buffer, $needle) !== false) {
            $title = explode($needle, $buffer)[1];
            return substr($title, 1, strpos($title, ';') - 2);
        } else {
            return getMp3StreamTitle($streamingUrl, $interval, $offset + $interval, false);
        }
    } else {
        throw new Exception("Unable to open stream [{$streamingUrl}]");
    }
}

var_dump(getMp3StreamTitle('http://str30.creacast.com/r101_thema6', 19200));

 

Обрезать текст Javascript «Показать еще»:

No Picture

Как обрезать текст есть куча способов.
Логика обрезания такова, что нужно определить размер блока, задать ему нужный размер какой мы хотим.
А в последствии вернуть на свои места. Если конечно денег платят можно и самому все сделать и воткнуть.
Но как помните у нас три копейки, по этому не стоит тратить свои нервы на это.
Читать далее »

WP + Woocommerce и шаблон без поддержки

No Picture

Взял тут подработку за три копейки, думаю ша быстро раскидаем текст перенести под товары.
Думаю херня вопрос, полез смотреть, а там оказывается то и шаблон не имеет поддержки, крутил и так и сяк думал как быстро выйти из ситуации ровно на сумму три копейки. Кароч жпа как обычно. Не ну есть вариант ровно на 3 копейки конечно прям в плагине поправить, и хер бы с ним ровно до обновления.
Наверно скоро так и буду делать. вообщем делаем следующие
Читать далее »

Кодировка UTF-8 консоли centos7

No Picture

Бывает сидим мы в putty, а в mc всякие кроки лезут, крестики нолики и тп…
В общем не та кодировка, а нам надо просто лишь воткнуть нужную кодировку вот так то:

#посмотрим, что у нас включено
localectl status
#посмотрим, что мы имеем
locale -a | grep en
#воткнем кодировку, перезапустите сессию
localectl set-locale LANG=en_US.UTF-8

 

Как пропинговать страницы из sitemap.xml

No Picture

Че типо как, а теперь введем получение ништяков за символическую сумму, а вы как думали?
За символические суммы, будут только решения которые используются в моей гавноработе.
Все чики бамбони.

И так поставлена задача, пинговать страницы содержащиеся в сайтмап. Обход будет совершен, без получения данных самой страницы.
Читать далее »