Используется при парсинге базы товаров из XLS-файла Была такая функция: Код (PHP): function uc2html($str) { $ret = ''; for( $i=0; $i<strlen($str)/2; $i++ ) { $charcode = ord($str[$i*2])+256*ord($str[$i*2+1]); $ret .= html_entity_decode('&#'.$charcode.';',ENT_NOQUOTES,'UTF-8'); } return $ret; } Excel-файл размером 1.5Мб разбирался секунд 40-45, и наибольшие тормоза создает именно данная функция. Перенос в функции html_entity_decode из цикла в результирующую строку сократил время обработки файла в 3 раза - время обработки стало около 15 секунд. Код (PHP): function uc2html($str) { $ret = ''; for( $i=0; $i<strlen($str)/2; $i++ ) { $charcode = ord($str[$i*2])+256*ord($str[$i*2+1]); $ret .= '&#'.$charcode.';'; } return html_entity_decode($ret,ENT_NOQUOTES,'UTF-8'); } Вопрос: можно ли еще оптимизировать эту функцию? Хотелось бы избавиться от цикла. Мысли такие: заменить цикл на str_split -> array_map -> implode -> html_entity_decode Но запутался в математике. Прошу помочь. PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
я что-то не понимаю зачем там в принципе такие сложности при декодировании. что мешает сразу декод вызвать? ну и там может быть грандиозная ошибка если вдруг символы входящие в аски будут - ты берешь последовательность из двух байт, делаешь из них энтити и потом это энтити пытаешься декодировать как один символ. но их же там должно быть два.
пфххахахахахахах... логику даже не в школьном курсе основ программирования преподают. её в дошкольном образовании развивают. Код (PHP): function uc2html($str) { return $str; } вот те патч. функция сразу вернет ту строку с которой её вызвали. без регистрации и смс. и без всякого дэкода. надеюсь не надо рассказывать почему я решил ничего не декодировать?
1) Не работает. Возвращаемая строка в нечитаемом виде. Обработка нужна. 2) Возвращаемая строка должна быть читаема не только людям в браузере, но и поисковым роботам, то есть вариант строки в виде Код (Text): ам... не подходит. 3) Прости, когда я в школе учился понятия "Основы программирования" еще не было. Разве что в университетах... Староват я, признаю.
Картинка (поправил ссылку): https://lh3.googleusercontent.com/-Iu73qlbOimI/Vlw0jFvtyyI/ ... Ic42/1.png Текстом не передать
нема картинки. 404.... а почему текстом не передать? хексануть можно для безопасности. или бейз-шестидесяти-четырнуть.
нет, пожалуйста в закодированном виде. base64 и результат сюда. я должен декодировать и получить исходную строку для работы с ней а не с тем как она выглядит на скриншоте.
В базе 64 (первая строка код, вторая - расшифровка) GgRABD4EMgQwBEIEOAQgAFAAbwBoAGoAYQBuAG0AYQBhAG4A Кровати Pohjanmaan PABwAD4AIQQgAD0ENQQ0BDAEMgQ9BDUEMwQ+BCAAMgRABDUEPAQ1BD0EOAQgAEQEMAQxBEAEOAQ6BDAEIAA/BEAEOARBBEIEQwQ/BDgEOwQwBCAAOgQgAD8EQAQ+BDgENwQyBD4ENARBBEIEMgRDBDwAcwB0AHIAbwBuAGcAPgAgADoEQAQ+BDIEMARCBDUEOQQgADgEIAA8BDAEQgRABDAEQQQ+BDIEPAAvAHMAdAByAG8AbgBnAD4ALgA8AC8AcAA+ACAAPABwAD4AEgQgADoEPgQ7BDsENQQ6BEYEOAQ4BCAAUABvAGgAagBhAG4AbQBhAGEAbgAsACAAOgRABD4EPAQ1BCAAOgRABD4EMgQwBEIENQQ5BCwAIAA/BEAEOARBBEMEQgRBBEIEMgRDBE4EQgQgADwENQQxBDUEOwRMBCAAMgQgADoEMARCBDUEMwQ+BEAEOARPBEUEOgA8AC8AcAA+ACAAPAB1AGwAPgAgADwAbABpAD4APABhACAAaAByAGUAZgA9ACIALwBkAGkAdgBhAG4AaQAtAGkALQBrAHIAZQBzAGwAYQAtAHAAbwBoAGoAYQBuAG0AYQBhAG4ALgBoAHQAbQBsACIAPgAUBDgEMgQwBD0ESwQgADgEIAA6BEAENQRBBDsEMAQ8AC8AYQA+ADwALwBsAGkAPgAgADwAbABpAD4APABhACAAaAByAGUAZgA9ACIALwB6AGgAdQByAG4AYQBsAG4AaQBlAC0AcwB0AG8AbABpAGsAaQAtAHAAbwBoAGoAYQBuAG0AYQBhAG4ALQAuAGgAdABtAGwAIgA+ABYEQwRABD0EMAQ7BEwEPQRLBDUEIABBBEIEPgQ7BDgEOgQ4BDwALwBhAD4APAAvAGwAaQA+ACAAPABsAGkAPgA8AGEAIABoAHIAZQBmAD0AIgAvAHMAdABvAGwAbwB2AGkAZQAtAGcAcgB1AHAAcAAtAHAAbwBoAGoAYQBuAG0AYQBhAG4ALgBoAHQAbQBsACIAPgAhBEIEPgQ7BD4EMgRLBDUEIAAzBEAEQwQ/BD8ESwQ8AC8AYQA+ADwALwBsAGkAPgAgADwALwB1AGwAPgA= <p>С недавнего времени фабрика приступила к производству<strong> кроватей и матрасов</strong>.</p> <p>В коллекции Pohjanmaan, кроме кроватей, присутствуют мебель в категориях:</p> <ul> <li><a href="/divani-i-kresla-pohjanmaan.html">Диваны и кресла</a></li> <li><a href="/zhurnalnie-stoliki-pohjanmaan-.html">Журнальные столики</a></li> <li><a href="/stolovie-grupp-pohjanmaan.html">Столовые группы</a></li> </ul>
Вопрос решил кодом, обрабатывающим всю строку разом: Код (PHP): mb_convert_encoding($str,'UTF-8','UCS-2LE'); Вместо UCS-2LE можно UTF-16LE и byte2le. Время выполнения скрипта стало (Ура!) 0.2 сек. Прогресс 45сек -> 15сек -> 0.2сек. PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
PHPExcel весит в три раза больше движка, для которого мне нужен разбор XLS. В PHPExcel конечно много плюшек, но мне они в данном случае не требуются, нужно просто получить отпарсенные с xls данные в виде массива. А данная библиотека - 1 файл весом 45 кб, быстро и прекрасно парсит файлы excel версии MS офис-2003. Решавшаяся в топике задача была связана уже со стадией обработки данных, полученных в результате работы класса.