The Diary
Дневникът на Георги
<- Четвъртък, 4 Януари 2007 | Начална страница | Събота, 6 Януари 2007 ->
Петък, 5 Януари 2007
Ай ша ти е.. и XML-а, SimpleXML парсер и подобни дивотии. Я за по-лесно вместо да мъкна цял xml parser за едно дребно нещо където съм принуден да работя с XML, ще взема да изполвам ей тази грозотия която стъкмих набързо и работи достатъчно добре в случая:
function pseudo_xml_parse($data) { $res = array(); $id = 0; foreach ($data as $line) { /* "Parse" XML ;) */ if (ereg("<([a-zA-Z]+)>([А-Яа-я:0-9a-zA-Z, \./]+)</([a-zA-Z]+)>", $line, $regs)) { /* Values */ if (isset($res[$id][$regs[1]])) $id++; $res[$id][$regs[1]] = $regs[2]; } else if (ereg("<([a-zA-Z]+)/>", $line, $regs)) { /* Booleans */ if (isset($res[$id][$regs[1]])) $id++; $res[$id]["values"][$regs[1]] = $regs[1]; } else if (ereg("<([a-zA-Z]+) ([a-zA-Z \"=]+)/>", $line, $regs)) { /* Messages */ if (isset($res[$id][$regs[1]])) $id++; $res[$id]["values"][$regs[1]] = $regs[2]; } } if (!$id) { /* If there is only one record, copy data do $res */ $res = $res[0]; $res[0] = $res; } return $res; }
Не отговарям за вредите причинени от опитите за прочит на този код ;)
[ Коментари: 10 ]Коментари
Е в случая е се тая :) Между другото когато е highlight-нат кода си се чете добре, а в сравнение със SimpleXML парсер направо си е красота.
Абе прав си ама за нещо малко по сложно(примерно nested elements), SimpleXML-а си има своите глезотийки, които могат да те прилъжат да използваш въпросното разширение вместо да връткаш измежду многопространствени(ей колко сложни думи съм знаел) масиви.
Чорбаджийски, само мързелив некадърник може да напише подобна идиотщина!
Парсерите не са да ги гледаш като изтребител. Като си толква прост, че дори не можеш да ги ползваш, поне не публикувай дивотиите си публично, да ти се смеят хората.
Как беше приказката, пет минути срам после цял живот инжинер. Честито ;)
Разсмя ме, честно :)
Приказката е:
5 минути да напишеш някоя дивотия плюс глупава гордост от дивотията - цял живот в кеша на Google и в смеха на хората :)
Ще те давам за пример, това горе си е уникално малоумно решение! Ще си го взема и запазя като един от най-ярките бисери в ИТ-то в България! И в твоя чест с удоволствие ще спазя Creative Commons License-то; няма да пропусна да те споменавам като автора му, бъди спокоен :)
Щом те радва, ползвай с радост, пази и разпространявай инженере. Не успях да разбера, коя част от "псевдо_xxxx", "грозотия" и "частно решение, работещо в случая" не разбра, та рипаш все едно съм написал, че туй парче код е госпъл.
@инж. Дончев >"... само мързелив некадърник може да напише подобна идиотщина!..."
Бе то мързеливите некадърници обикновено гледат да ползват готови решения, независимо колко ще утежнят нещата, а не да се мъчат да ги опростят, ама както и да е.
Наистина ли ти беше по-лесно да напишеш това, отколкото да се пребориш с един парсър?
Това си е мазохизъм ако питаш мене...
Не съм се борил с парсъра, просто не мога да приема да ползвам нещо което е 100K (и 10 да е, все тая) при условие, че десет реда ми вършат същата работа в случая.
Disclaimer: Except where otherwise noted all opinions expressed here are personal
opinions of the author and do not reflect official opinions of my employer or
any other person, company or organization associated with the author.
Copyright: Except where otherwise noted the content of this site is licensed under a
Creative Commons Attribution License. Текстът на договора за ползване на български
Copyright (cc) 2003-2011 Georgi Chorbadzhiyski. Some rights reserved.
Comments, texts and pictures not signed by me are property of their respective owners.
Страницата е генерирана от Glog v3.99-test
Да, не е лесен за четене. Трябвало е да ползваш perl регулярни изрази, за да е очевиден ;-)
Написа Пейо (www) на 09-Jan-2007 09:33