Полезные советы и решения

Написана 13 Сентября, 2012 в 11:57. Автор: borN_free   |   Теги: sugar, lifehack Комментарии 4

PHP

Данная статья будет постоянно пополняться. Здесь представлены интересные для меня решения некоторых задач или просто интересный код.

PHP

Чтобы распарсить контент и получить на выходе UTF-8 строку, необходимо перед шаблоном регулярного выражения вставить (*UTF8)

preg_match('(*UTF8)[a-z0-9]+', $matches);

Если у вас длинное регулярное выражение, можно разбить его по строкам, и написать комментарии к каждому "действию" с помощью ~x

$str = 'test-regex-blablabla123456';
preg_match('
    ~
    ^      #начало строки
    (\w+)  #слово
    .+?    #любая последовательность (не жадная)
    (\d+)  #число
    $      #конец строки
    ~x
', $str, $matches);
var_dump($matches);

Результат:

array
  0 => string 'test-regex-blablabla123456' (length=23)
  1 => string 'test' (length=4)
  2 => string '123456' (length=5)

Если вам необходимо заменить много разных символом в строке на один (например на пустую строку), то в функции str_replace() вторым параметром можно указать не массив, а просто пустую строку, при этом каждый элемент из первого массива будет заменен вторым параметром. К своему стыду узнал это только недавно.

$message = 'a-bcd;ef_g';
$newMessage = str_replace(array('-', ';', '_'), '', $message); // 'abcdefg'

Чтобы отфильтровать массив, убрав из него не подходящие под условие элементы, надо пользоваться функцией array_filter, но ни в коем случае не циклом:

$numbers = array(1, 2, 3, 4, 5);
// используем анонимную функцию
$filteredNumbers = array_filter($numbers, function ($v) {
    // оставим только четные
    return ($v % 2) == 0;
});
// $filteredNumbers - {2,4}

В это же время, если вы хотите пройтись по всем элементам массива и сделать какие-либо дейсвтия с ними, используйте функцию array_map

$numbers = array(1, 2, 3, 4, 5);
// используем анонимную функцию
$doubledNumbers = array_map(function ($v) {
    // умножим все на 2
    return $v * 2;
}, $numbers);
// $doubledNumbers - {2, 4, 6, 8, 10}

Часто требуется смерджить два (и более) массива в один, и для этого существует замечательная функция array_merge, а не каждый знает, чтобы сохранить ключи массива (более подробно смотрите документацию), можно и нужно использовать сложение.

$firstArray = array('key' => 'value');
$secondArray = array(1 => 'data');
$result = $firstArray + $secondArray;
// результат
Array
(
    ['key'] => value
    [1] => data
)

Чтобы добавить во время исполнения скрипта дополнительный include path, необходимо перезаписать существующий, разделенный с новым через PATH_SEPARATOR - платформонезависый разделитель:

$yetAnotherIncludePath = '../vendor/something';
set_include_path(get_include_path() . PATH_SEPARATOR . $yetAnotherIncludePath);

MySQL

Знали ли вы, что можно делать ORDER BY в запросах UPDATE? А ведь можно:

UPDATE `users` SET `rating` = 5 * `age` ORDER BY `age` DESC

Хотите сделать дамп конкретной таблицы из базы данных? А может еще и написать условие выборки? Пожалуйста:

mysqldump -ulogin -ppass --databases "test" --tables "users" --where "id < 20" > dump.sql

HTML

Чтобы разрешить выбирать только один элемент в <select> с атрибутом multiple, можно добавить атрибут size="3" (любое число). При этом дропдаун станет таким же как и с multiple="multiple" визуально. Вот пример:

Мы можем выбрать только один элемент.

Zend Server

Перезагрузить апач для Zend Server:

net stop Apache2.2-Zend && net start Apache2.2-Zend

Apache

Бывают ситуации, когда Apache не запускается, и лог не помогает, тогда на помощь придет такая команда, которая которая в консоль отправляет все debug сообщения:

sudo /usr/sbin/httpd -k start -e Debug -E /dev/stdout

4 comments

+5 ответить
November 8, 2012 at 06:56 am

Последний пункт - PHP. Это скорее html чем PHP :)

ответить
November 8, 2012 at 06:59 pm

Ваша правда, исправил. Спасибо!

ответить
August 17, 2017 at 03:22 am

Rolex's Sunday watch is a symbol of watches uk unparalleled dignity. The oyster shell waterproof to a depth of 100 meters, the 36 mm case with 18ct Gold material to build, to fake rolex represent truly respected status. The unique middle good swiss replica case is made of solid metal.

ответить
August 22, 2017 at 07:11 am

This alcoholic beverage is a true Helmet Bags tribute to the bike culture. Every time saddle bag for motorcycle he discovered a rare motorcycle, the German bike enthusiast decided the best way to preserve the spirit of motorcycle leather tool bag the old machine was to Side Door Bags dip its parts in an actual spirit. Thus, The Archeologist was born.

Оставьте свой комментарий:

Поля с * обязательны.