Вдвое медленнее официального способа и в 7 раз медленее регулярки. Это не говоря о том, что внутри кромешный ад из лишних вызовов.
$string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse mollis elementum tempus. Vivamus bibendum elit nisl, quis tristique arcu volutpat at. Vestibulum bibendum at neque ac semper. Duis sit amet felis pharetra, eleifend felis nec, eleifend nunc. Aliquam erat volutpat. Donec vestibulum augue erat, vel feugiat ligula ultricies ac. Aliquam erat volutpat. Morbi et iaculis neque. Morbi placerat tortor non nunc tempor, eu feugiat risus volutpat. Phasellus interdum dolor sed turpis mollis consectetur. Donec tincidunt lacus magna. Vestibulum semper condimentum lorem, ut porttitor enim blandit nec. Pellentesque non rutrum quam, id pharetra metus. Заблуждение контролирует трансцендентальный язык образов, открывая новые горизонты. Гипотеза контролирует непредвиденный даосизм. Культ джайнизма включает в себя поклонение Махавире и другим тиртханкарам, поэтому заблуждение категорически порождает и обеспечивает закон внешнего мира, не учитывая мнения авторитетов.";
$speedtest = new speedtest(true);for ($i = 0; $i < 10000; $i++){ if (mb_detect_encoding($string, 'UTF-8', true) == 'UTF-8') { # it's UTF-8 }}$speedtest->end();debug('Выполнение проверки средствами PHP заняло ' . $speedtest->result() . 's');
Выполнение проверки средствами PHP заняло 0.0581s
$speedtest = new speedtest(true);for ($i = 0; $i < 10000; $i++){ if (preg_match('//u', $string)) { # it's UTF-8 }}$speedtest->end();debug('Выполнение проверки средствами регулярок заняло ' . $speedtest->result() . 's');
Выполнение проверки средствами регулярок заняло 0.0143s
$speedtest = new speedtest(true);for ($i = 0; $i < 10000; $i++){ if (preg_match("/([\360-\364])([\200-\277])([\200-\277])([\200-\277])/", $string) or preg_match("/([\340-\357])([\200-\277])([\200-\277])/", $string) or preg_match("/([\300-\337])([\200-\277])/", $string)) { # it's UTF-8 }}$speedtest->end();debug('Выполнение проверки средствами аж трёх регулярок заняло ' . $speedtest->result() . 's');
Выполнение проверки средствами аж трёх регулярок заняло 1.0723s
Второй из костылей пока что понравился больше всех по скорости.
Надо будет ещё проверить матчасть по модификатору 'u', но если он не лжёт слишком часто, то будет класс строк с полной поддержкой utf-8.
mysql_* устарел и к использованию не рекомендуется.
Зачем тогда вообще что-то указывать?
Боги, да юзайте что только в голову взбредёт. Я предлагаю опыт разработки и инструмент для этого. Вопли "только для себя" и "блокнотик" можете разбрасывать в любом треде, полезнее вы от этого не становитесь :)
mb_* не впёр, предполагается использование строки как и у алиасов в глобальном неймспейсе - с поправкой на размеры в байтах. Если совсем приспичит - появится класс string_utf8:: или валидация на мультибайтовые кодировки. Но на текущий момент функция, предоставляемая языком, предельно медленная и вероятность промаха при определении высока.
За объяснениями к сорцам PHP на гитхабе. В последний раз когда я их видел - mb_detect_encoding там являл собой здоровый костыль на сишке, который к использованию не рекомендую. Если будет годный исходник с быстрым определением кодировки строки - сюда\в ЛС\в скайп ссылку на пасту, посмотрю.
Хотя решать десятилетние проблемы языка мне одному выглядит как-то зловеще, не находите?
Если id задаёт не юзверь, то SQL условно безопасен. Вообще говоря любые входные параметры, вне зависимости от их появления, необходимо экранировать.
Для интов рекомендуется принудительное кастование к типу:
$query = "SELECT * FROM products WHERE id LIKE '%" . (int) $prod . "%'";
Скорее мышление.
Обижаешь линуксоида :О
Есть ещё P2P передача данных в последних версиях мажорных браузеров через WebRTC. Помимо этого только постоянный долбёж, сокеты реализовать на стороне юзверя довольно проблематично.
Напротив: разрешить исполнение PHP в .css довольно просто.