Простой парсер таблицы в массив из HTML

Задача: необходимо преобразовать страницу HTML, в которой данные размещены в виде стандартной таблицы обрамленной тегами <table></table>, в двумерный массив на PHP (парсер таблицы в массив).

<table>
	<tr>
		<td>1</td><td>2</td><td>3</td><td>4</td>
	</tr>
	<tr>
		<td>1</td><td>2</td><td>3</td><td>4</td>
	</tr>
</table>

Сначала я хотел решить задачу «в лоб», а именно искать теги в тексте, писать функционал по вычленению данных между тегами.. Но потом подумал, что «наверное всё уже придумано до нас», для подобных задач. Ну и собственно оказался прав. Задачу решил без лишних усилий в течении минут 5.

Решение: воспользуюсь PHP функцией DOMDocument для того чтобы преобразовать текст в DOM объект:

    $contents = '<html lang="ru-RU"><head><meta charset="UTF-8" /></head><table>'.$contents."</table></html>";
    $DOM = new DOMDocument;
    $DOM->loadHTML($contents);

Так я получаю построенное DOM дерево. Затем получаю все «ветки» по имени tr, и перебираю их, одновременно перебирая «всех листья» (т.е. тэги td):

function tdrows($elements){
  $str = [];
    foreach ($elements as $element) {$str[]= $element->nodeValue;}
  return $str;
}

function getdata($contents){
    $contents = '<html lang="ru-RU"><head><meta charset="UTF-8" /></head><table>'.$contents."</table></html>";
    $DOM = new DOMDocument;
    $DOM->loadHTML($contents);
    $items = $DOM->getElementsByTagName('tr');
    $mass=[];
    foreach ($items as $node) {
        $mass[]=tdrows($node->childNodes);
    }
    return $mass;
}

$mass=getdata($table);
var_dump($mass);

Данные я передал в двухмерный массив $mass, т.е. задача «парсер таблицы в массив» решена

парсер таблицы в массив через построение DOM

Ну а тут ссылка на подобную же задачу, но вместо HTML документа — файл формата XML

Arduino: передача массива строк в качестве функции

За что я не очень люблю СИ, так за то что можно споткнуться на пустом месте и долго думать почему так? И в этот раз тоже, долго гуглил, почему у меня не получается передать массив строк в функцию, массив внутри «обнулялся». Наконец наткнулся, что СИ это не умеет. Умеет только передавать указатель на массив. Поэтому функция может выглять подобным образом:


int PutMenu(int cnt,String *mass){
  for (int i=0; i <= cnt; i++){
    Serial.println(mass[i]);    
  };
}

void setup(void){
    Serial.begin(9600);
    String massive[] = { "name", "test", "name", "need", "you", "need", "me", "test" };
    PutMenu(3,massive);
    return 0;
}

void loop(void){

}

Проверка наличия индекса массива в массиве

Почему то в 1С нет встроенной функции проверка наличия индекса в массиве. Хотя в принципе понятно, индекс идет по порядку, и если проверяемое значение меньше количества элементов в массиве, то индекса нет. Но мне приспичило… Вот результат:




Работа с именованными массивами на Python

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

Обьявление массива:

res[]

Добавление в массив:

res.append({name:{‘port_id’:port_id,’name’:name,’status’:status}});

Другие функции работы с массивом:

array.typecode — TypeCode символ, использованный при создании массива.

array.itemsize — размер в байтах одного элемента в массиве.

array.append(х) — добавление элемента в конец массива.

array.buffer_info() — кортеж (ячейка памяти, длина). Полезно для низкоуровневых операций.

array.byteswap() — изменить порядок следования байтов в каждом элементе массива. Полезно при чтении данных из файла, написанного на машине с другим порядком байтов.

array.count(х) — возвращает количество вхождений х в массив.

array.extend(iter) — добавление элементов из объекта в массив.

array.frombytes(b) — делает массив array из массива байт. Количество байт должно быть кратно размеру одного элемента в массиве.

array.fromfile(F, N) — читает N элементов из файла и добавляет их в конец массива. Файл должен быть открыт на бинарное чтение. Если доступно меньше N элементов, генерируется исключение EOFError , но элементы, которые были доступны, добавляются в массив.

array.fromlist(список) — добавление элементов из списка.

array.index(х) — номер первого вхождения x в массив.

array.insert(n, х) — включить новый пункт со значением х в массиве перед номером n. Отрицательные значения рассматриваются относительно конца массива.

array.pop(i) — удаляет i-ый элемент из массива и возвращает его. По умолчанию удаляется последний элемент.

array.remove(х) — удалить первое вхождение х из массива.

array.reverse() — обратный порядок элементов в массиве.

array.tobytes() — преобразование к байтам.

array.tofile(f) — запись массива в открытый файл.

array.tolist() — преобразование массива в список.

Пример:

Получится чудный вывод на экран чтото типа:




1С. Разбить строку на массив по разделителю




1 2