@Paltinik

Оптимальна ли функция парсинга HTML?

Использую библиотеку DiDom
Как вообще код ? Может что то подправить что бы было оптимальнее ??
function parseHtml($response){

$document = new Document($response,false,'CP1251');


$data = array(
    'title' => $document->find('title'),
    'h2' => $document->find('h2'),
    'block_top' => $document->find('.top'),
    'block_other' => $document->find('.related h3')
    );

$error_data = array();

// Записываем в массив с ошибками ключи в которых они были
foreach ($data as $key => $val){
if (count($val) < 1) {
$error_data[$key] = '0';
}
}

//Если есть ошибки смотрим какие именно и выводим в консоль либо записываем в бд лог
    if (count($error_data) > 0) {

        $err_log = "├ ERROR GET DATA !!!\n";

        foreach ($data as $key => $val){
            if (count($error_data[$key]) > 0) {
            $err_log .='└ '.$key. " = " . $error_data[$key] . "\n"; 
            }
        }

    App::add_debug_msg($err_log);

    } else { //Если ошибок нету выводим в консоль инфу, пишем в бд и тд..

        $data['title'] = $data['title'][0]->text();
        $data['h2'] = $data['h2'][0]->text();
        $data['block_other'] = stristr( $data['block_other'][0]->text(), '- beta.ru', true);
        $data['block_top'] = $data['block_top'][0]->innerHtml();

        //Обрезаем пробелы по бокам в данных массива
        $data=array_map('trim',$data);

     //функция записи в бд данных из $data
    //......
    //......

    }




}
  • Вопрос задан
  • 157 просмотров
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега PHP
Web developer
Код читаемый - это уже хорошо.

Про оптимизацию нет смысла говорить, потому что алгоритма как такового нет. Есть только new Document и несколько $document->find(). Тут нечего оптимизировать / ускорять.

Если нужно сделать код лучше, то:
  1. добавить phpDoc
  2. выкинуть псевдографику. Должен быть код ошибки и короткий текст. Оформление ошибок должно быть в другом месте (одно - для консоли, другое - для веба).
  3. писать по-русски грамотно (со знаками препинания)
  4. убрать callback hell. В случае ошибки return, чтобы не было else.
  5. $data лучше сделать объектом, а не массивом, чтобы его свойства были заранее определены
  6. много других мелочей. В итоге от исходного кода ни одной старой строчки не останется.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы