среда, 18 августа 2010 г.

Парсинг HTML, DOM

Свое знакомство с php я начал именно с парсинга, в дальнейшем для облегчения я попробовал использовать Simple HTML DOM Parser. С ним работать очень удобно, но он жрет очень много памяти, и там где происходит много итераций с его участием скрипт завершает свою работу с Fatal error из за не хватки памяти.
 
Вообщем нашел я ему замену, регулярка которая парсит содержимое элемента по указному id или class-у.
Код - пример #1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class ParsDom {

    public $sContent = '';
    
    public function getElement($sId = '', $sElem = 'div') {
        if (!$sId || !$this->sContent) return '';
        $aOut[0] = array();
        $sReg = "
        /
        <{$sElem}[^>]+\b(?:class|id)=[\"\']?{$sId}[\"\']?[^>]*>
         (?:
           (<{$sElem}[^>]*>*?<\/{$sElem}>)|
           .
         )*?
        <\/{$sElem}>
        /xsS";

        preg_match_all($sReg, $this->sContent, $aOut);

        if (isset($aOut[0]))
            return $aOut[0];
        else    
            return '';
    }
}

// Пример
$oParsDom = new ParsDom;

// Контент от куда будем парсить
$oParsDom->sContent = $sData;

// Парсим все DIV элементы с указаным id или классом
$aDiv = $oParsDom->getElement('class_or_id_name');

// Парсим все LI элементы с указаным id или классом
$aLi = $oParsDom->getElement('menu', 'li');

суббота, 7 августа 2010 г.

Жарко

Выходные. У нас жара, побиты все рекорды, температура за 40. Леса горят, вроде уже поменьше, т.к. меньше смога на улице.

Вчера посмотрел фильм Мухина "Максимум лжи и глупости" про высадку американцев на Луне. Говорит логичные вещи, у них не было возможности туда доставить космонавтов и обратно, т.к. не было таких мощных двигателей и до сих пор нет. Также привезенные 300кг лунного грунта никому не дают на анализ, а кому давали, установили, что он с земли.

Все парюсь с PHP. В который раз, переделываю механизм процессов, теперь на ООП. Все это трудно укладывается в голове, поэтому заюзал сервис "карт ума" и чего то там изобразив пытаюсь воплотить в коде, надеюсь получится и переписывать не придется.

Жена с детьми отдыхают на волге, ездят с родителями на острова, купаются. Ну ничего, еще немного, у меня будет отпуск и я первый раз поеду с семьей на море в Анапу.

Почему блоггер не сохраняет мое форматирование! Аргх... Приходится ручками раставлять теги br

пятница, 6 августа 2010 г.

Эксперимент с Sape 0

Прошло уже наверное пол года, после того как Яндекс забанил последние из моих ГС, которые, хоть и немного но приносили прибыль.

Как то у меня к этому всему охладело. Но, читая блоги, посматривая на topsape.ru захотелось попробовать...

Эксперимент будет такой:

Использую:
1. только фри домены 3-го уровня
2. фрихостинги
3. свои навыки php, делаю "кнопку бабло" о_О
4. Zebrum Lite, Satellite-X

Получаю профит!

четверг, 29 июля 2010 г.

Почему Notepad++ лучше IDE

1. Он гораздо быстрее любой IDE
2. Подсветка синтаксиса, парных тегов, фигурных скобок лучшая из виденных мной
3. Ctrl+B - скачем между фигурными скобками
Ctrl+D - дублируем строчку
Ctrl+Shift+ стрелки вверх, вниз - перемещаем строчки вверх, вниз

Наиболее близок к Notepad++ - JetBrains PhpStorm но он платный и тормозной.

среда, 21 июля 2010 г.

Выбор php фреймворка для проекта. Великолепный Yii

Мое знакомство с фреймворками началось с CodeIgniter. У него хорошая документация, есть сообщество, он до недавнего времени был самым быстрым (вроде бы). Но он уже давно не обновлялся и устарел.

Я давно уже планирую реализовать небольшой проект. Что то типа соц. сети, но со своими плюшками. Ну и надумал использовать для этого фреймворк. Хочется сделать все по грамотному, как можно меньше говно кода и т.д. При создании чего либо, очень важна архитектура.

Посмотрел Zend Framework. Этот фреймворк достаточно мощный, и возможностей у него много. Мне не понравилось что он изначально интегрирован с Dojo с которым я не дружу. jQuery там опционально поддерживается, но уж очень много нужно плясок с бубном, чтобы все работало как надо. Мультиязычность тоже проблема.

Попробовал Yii. Первые впечатления: Я в восторге! Он сам генерирует код! Обалденно... наверное, это что то подобное ROR. Он сразу же дружит с jQuery.

среда, 21 апреля 2010 г.

ISSET в java script

Жаль что нет такой нужной функции в JS. 1 раз мне помогло такое решение:
Код - пример #1
1
2
3
4
5
6
var foo = 123;

if (undefined !== window.foo)
{alert('foo exist!')}
else
{alert('foo undefined!')};
Заодно протестировал этот код в онлайн сервисе по отладке Java Script http://jsbin.com/ebumu/edit

понедельник, 18 января 2010 г.

Определение браузера в JavaScript

Иногда бывает нужно определить браузер юзера на странице, нашел для этого такое решение:
var isIE = !!(window.attachEvent && !window.opera); var isOpera = !!window.opera; var isWebKit = navigator.userAgent.indexOf('AppleWebKit/') > -1; var isKHTML = navigator.userAgent.indexOf('KHTML') != -1; var isGecko = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1; var isMobileSafari = !!navigator.userAgent.match(/Apple.*Mobile.*Safari/); var isChrome = !!window.chrome;
А потом там, где нужно осуществлять проверку на браузер, делаем так:
if (isIE) { alert("Internet Explorer! Make me unsee it..."); }