На работе возник спор, что лучше использовать, чтобы вытаскивать данные из XML.
XML могут быть больших размеров (сотни мегабайт), но, если использовать simplexml_load_string - парсим всего 1 раз и вся инфа уже необходимая есть, а так, приверженцы preg_match:
1) каждый раз для того чтобы определить какое-либо поле из XML загружают в память 2) пишут регулярки под каждый случай 3) (еще что-нибудь)
Реально, офис разбился, (условно), на 2 лагеря.
да, и могут возникнуть вопросы, почему загружают, если оно построчно работает, весь файл. Бывают файлы в одну строку, без символов переноса строки.
=)
Neo][
27.06.2018, 14:03
Какие критерии "лучшести", в каком месте кода и при каких условиях используются эти функции?
Это если разговаривать серьёзно и аргументированно. А ежели так, языками почесать, то мне нравится высказывание: Если у вас есть проблема и вы решили использовать регулярные выражения, то у вас уже две проблемы
ЗЫ Это у тебя проблемы со шрифтами/вкусом/возрастом или ты считаешь, что у читающих твои сообщения какие-то проблемы? Вопрос конечно же не в обиду, просто реально не понимаю зачем на полэкрана выделять в данном случае текст.
Medvedkoo
27.06.2018, 15:28
Цитата(Neo][ @ 27.06.2018, 15:03)
Какие критерии "лучшести", в каком месте кода и при каких условиях используются эти функции?
Это если разговаривать серьёзно и аргументированно. А ежели так, языками почесать, то мне нравится высказывание: Если у вас есть проблема и вы решили использовать регулярные выражения, то у вас уже две проблемы
ЗЫ Это у тебя проблемы со шрифтами/вкусом/возрастом или ты считаешь, что у читающих твои сообщения какие-то проблемы? Вопрос конечно же не в обиду, просто реально не понимаю зачем на полэкрана выделять в данном случае текст.
Важна читабельность кода, простота использования данных в XML.
По поводу шрифта, просто вопроса как-такового не было вначале
Supple Hope
27.06.2018, 21:03
не в курсе специфики работы simplexml_load_string, но разве ему не нужно тоже парсить весь файл? разница может быть только если grep ищет все совпадения а simplexml_load_string завершается после первого найденнного результата и дальше не читает файл однако же ящитаю что лучше использовать simplexml_load_string для чтения хмл, потому что читать это легче - сразу понятно что этот кусок кода делает
RayTwitty
27.06.2018, 22:18
Если можно кэшировать, то надо кэшировать.
abramcumner
27.06.2018, 22:35
Цитата(Hoyt Ridge @ 27.06.2018, 21:03)
что лучше использовать simplexml_load_string для чтения хмл, потому что читать это легче - сразу понятно что этот кусок кода делает
Ну так-то можно тоже назвать функцию pregxml_load_string. Тоже все понятно.
Medvedkoo
28.06.2018, 10:26
Нет, ребят, суть не в читабельности вызова метода, а в читабельности кода, который обрабатывает данные.
Если мы парсим XML, то у нас есть дерево этого XML, атрибуты и т.п., все наглядно, а в случае с preg_match не очень (как по мне)
Supple Hope
28.06.2018, 10:33
Используй simplexml_load_string.
FOX
28.06.2018, 14:51
С регулярками ад вообще получится, SimpleXML тоже не айс в плане загрузки всего дерева в память.
Смотрите в сторону XMLReader, парсил им файлы по 300-600мб.