PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (29): В начало « ... 3 4 5 6 [7] 8 9 10 11 ... » В конец

> Найдено сообщений: 422
Джур Отправлено: 30 Января, 2009 - 08:51:00 • Тема: Как распарсить сложный XML? • Форум: Программирование на PHP

Ответов: 17
Просмотров: 3176
Ну а вот так...
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $xml=simplexml_load_file('1.xml');
  3.  
  4. $echo .= '<h1>'.$xml->infoitem->title.'</h1>';
  5. $echo .= '<h2>'.$xml->time.'</h2>';
  6.  
  7. $echo .= '<p>'.$xml->infoitem->text[0].'</p>';
  8.  
  9. $echo .=  '<table border="1"><tr>';
  10. foreach($xml->infoitem->text[1]->data->table->column as $v) $echo .=  '<th>'.$v.'</th>';
  11. $echo .=  '</tr>';
  12. foreach($xml->infoitem->text[1]->data->table->row as $v){
  13.   $echo .=  '<tr><td>'.$v->cell[0].'</td>';
  14.   $echo .=  '<td>'.$v->cell[1].'</td>';
  15.   $echo .=  '<td>'.$v->cell[2].'</td></tr>';
  16. }
  17. $echo .=  '</table>';
  18.  
  19. $echo .= '<p>'.$xml->infoitem->text[2].'</p>';
  20.  
  21. echo iconv('utf-8','cp1251',$echo);

Подмигивание
Джур Отправлено: 29 Января, 2009 - 12:02:55 • Тема: как написать удобный шаблонизатор • Форум: Программирование на PHP

Ответов: 27
Просмотров: 1501
Stierus пишет:
Не мог бы ты выложить код ?

Сожалею, коллега, но рабочих копий у меня не осталось, но в принципе могу собрать работающий аналог.
Я так понимаю, вам интересен сам принцип.
Джур Отправлено: 28 Января, 2009 - 19:47:10 • Тема: Компилятор PHP в байт код Си • Форум: Программирование на PHP

Ответов: 27
Просмотров: 1934
ну. как говорится. Улыбка
Цитата:
To do the feasibility study for a PHP to C converter

Осталось только подождать.

Хотя если ждать не хочется, написать транслятор можно вполне, это, для основных функций, по силам одному человеку хорошо знающему оба языка.

Резюмирую
Сейчас все компиляторы для РНР, работают как VB6, что очень медленно. Если же РНР можно будет компилировать "по настоящему", это реально может понравится многим "не web" программистам.
Джур Отправлено: 28 Января, 2009 - 17:29:23 • Тема: как написать удобный шаблонизатор • Форум: Программирование на PHP

Ответов: 27
Просмотров: 1501
Цитата:
То есть, не стоит писать шаблонизатор, юзающий её?

Если очень хочется, почему бы и не попробывать.
Открою секрет, Ytrams это мой 4-й шаблонизатор. Поэтому перепробывал я многое... И Eval тоже.

2-й шаблонизатор назывался "eVa" и работал так:
брались все шаблоны которые юзались для генереции страницы, превращались в РНР код (заметте, не отдельно как в смарти, а все сразу) и все это дело сохранялось на некоторое время в большой куче (в базе данных)

Ядро получает запрос на вывод страницы, смотрит в куче, есть ли уже "собраный макет", если есть, то подключает его через eval(), если нет, то собирает его и подключает.

В итоге, эта штука обгоняла Smarty в 6-8 раз по скорости. Но эа это я платил тем, что "куча" с шаблонами была немаленькой (1-3Мб)

Резюмирую
Нет неправильных подходов, но перед тем как юзать, надо сначала надо потестировать. Подмигивание
Джур Отправлено: 28 Января, 2009 - 14:13:41 • Тема: Как распарсить сложный XML? • Форум: Программирование на PHP

Ответов: 17
Просмотров: 3176
President оставте кактус в покое, он у меня один остался Ха-ха
Возможно вам таки стоит описать задачу, что вы хотите получить. А то я так подозреваю что мы вас не понимаем... или вы нас.
Джур Отправлено: 28 Января, 2009 - 12:23:58 • Тема: Компилятор PHP в байт код Си • Форум: Программирование на PHP

Ответов: 27
Просмотров: 1934
Кстати... А что если человек хотел транслятор с РНР на Си...
Следите за руками... раааз, а вот и...

пример из жизни
Помню в универе нашем, матфаковцы все писали на паскале, а потом транслировали в Си и сдавали преподу... Ибо 3-и курса их учили паскалю, а потом препод сменился. Улыбка

Возможно чел хотел автоматический транслятор+компилятор... Запускается РНР разборщик, смотрит на РНР код, переводит его на СИ, затем скармливает с предустановками GCC, и бинарники складывает в кеш...
И собственно выполняется уже не РНР файл а скомиленный из него бинарник.
Джур Отправлено: 28 Января, 2009 - 12:16:32 • Тема: как написать удобный шаблонизатор • Форум: Программирование на PHP

Ответов: 27
Просмотров: 1501
JustUserR кстати, вы же PERLовец.
Что сейчас в PERL популярно как шаблонизатор? Там же вроде без шаблонизатора писать нельзя. Просвятите плиз.
Джур Отправлено: 28 Января, 2009 - 09:30:59 • Тема: как написать удобный шаблонизатор • Форум: Программирование на PHP

Ответов: 27
Просмотров: 1501
JustUserR пишет:
И кстати насчет IF и друних конструкций в шаблоне - может использовать XML вместе с XLT ?


Мир не идеален дорогой JustUserR. Не идеальны броузеры, мониторы и люди. А так как неидеальны люди, неидеальны и их спецификации.

К чему это я?
Я к тому, что даные готовит РНР и хранит он их в виде хешей-масивов. Шаблонизатор это набор логики отображения который эту логику наложит на сырые данные. И в чем отличие XSLT от конструкций вида foreach/if? Где прибыль так сказать?

XSLT требует лишний шаг...
Так как РНР это набор хеш-масивов, их надо перегнать в XML и XML передать XSLT движку, который, даст бог, выдаст результат.

XSLT дороже в создании и еще дороже в поддержке, потому что, кодеров в универах учат языку C/C++ и окромя классов ничего такие кодеры не признают...
Если заикнутся про Пролог, удавят на месте. Улыбка
Джур Отправлено: 28 Января, 2009 - 08:43:52 • Тема: Как распарсить сложный XML? • Форум: Программирование на PHP

Ответов: 17
Просмотров: 3176
President пишет:
Заработало! Спасибо! Только я не понял как теперь там табличку то вставить в правильное место

Я когда в первый раз XML парсил сложный, тоже "шокировался" по типу "ээ а где остальное".
На самом деле отображается глубина не более 3-х вроде... Это специфика перевода в array. Показывает 3, а содержит все.

Чтобы получить полную копию xml->array можно обработать как-то так
PHP:
скопировать код в буфер обмена
  1. <pre><?PHP
  2. $xml=simplexml_load_file('1.xml');
  3.  
  4. function pars($xml)
  5. {
  6.   foreach($xml as $k=>$v){
  7.     if(count($v)){
  8.       $a[$k][]=pars($v);
  9.     }else{
  10.       $a[$k][]=$v;
  11.     }
  12.   }
  13.   return $a;
  14. }
  15. print_r(pars($xml));
  16. ?></pre>


Как видите, мы получили подробненько всего монстра.
Учтите, что я не приводил к cp1251, так как пример учебный.

Резюмирую:
То что simplexml выводит xml в таком необычном на первый взгляд виде - это нормально и правильно. А то что таблички "пропали", так просто они слишком глубоко лежали и были скрыты.

Если нужны более подробные/точные пояснения, прошу стучать в аську, не стесняйтесь.
Джур Отправлено: 27 Января, 2009 - 20:30:23 • Тема: как написать удобный шаблонизатор • Форум: Программирование на PHP

Ответов: 27
Просмотров: 1501
Я вот непонимаю, чего вы люди паритеь всегда так. Улыбка Шаблонизатор по принципу смарти можно написать за пару часиков... например вот: http://sitelive[dot]biz/file/ytrams/ytrams_015[dot]zip

И не РНР шаблон и работает как смарти и расширяется и вес 5кб. Подмигивание
Джур Отправлено: 27 Января, 2009 - 20:18:57 • Тема: Как распарсить сложный XML? • Форум: Программирование на PHP

Ответов: 17
Просмотров: 3176
President пишет:
Сделал вот такой код:

Кролики плакали, но продолжали жрать кактус. Ха-ха
За каким, вы жрете этот кактус? Оставте класс в покое. Что за самолечение блин.

Stierus пишет:
Вы про InfoPacket забыли : $xml->InfoPacket->InfoItem->Text[1]

А вот и нифига... по стандарту <InfoPacket> или любой тег на его месте в обработке не участвует. Подмигивание
Поэтому правильно $xml->InfoItem->Text

PHP:
скопировать код в буфер обмена
  1.  
  2. <pre><?PHP
  3. $xml=simplexml_load_file('1.xml');
  4. echo iconv('utf-8','cp1251',print_r($xml,true));
  5. ?></pre>
  6.  


simplexml_load_file() - создает из документа xml класс со свойствами... Вы можете пробежатся по нему как по массиву,
учитывая "<![!DATA", вложенось и прочие XML заморочки.
Джур Отправлено: 27 Января, 2009 - 12:14:55 • Тема: Ужать до поределенного размера • Форум: Программирование на PHP

Ответов: 11
Просмотров: 548
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function resize($infile,$outfile,$neww,$newh,$quality=80)
  3.   {
  4.     $pr=@getimagesize($infile);
  5.     switch($pr['mime']){
  6.       case 'image/jpeg':
  7.         $im=imagecreatefromjpeg($infile);
  8.         $ext='jpg';
  9.         break;
  10.       case 'image/png':
  11.         $im=imagecreatefrompng($infile);
  12.         $ext='png';
  13.         break;
  14.       case 'image/gif':
  15.         $im=imagecreatefromgif($infile);
  16.         $ext='gif';
  17.         break;
  18.       default:
  19.         return false;
  20.     }
  21.  
  22.     $ix = $pr[0];
  23.     $iy = $pr[1];
  24.     $iyr = $iy*$neww;
  25.     $iyr = $iyr/$ix;
  26.     $ixr = $ix*$newh;
  27.     $ixr = $ixr/$iy;
  28.     if($iyr < $newh){
  29.       $newh = $iyr;
  30.     }else{
  31.       $neww = $ixr;
  32.     }
  33.  
  34.     $im1=imagecreatetruecolor($neww,$newh);
  35.     imagecopyresampled($im1,$im,0,0,0,0,$neww,$newh,$pr[0],$pr[1]);
  36.  
  37.     if(is_string($outfile) and substr($outfile,-3)!=$ext) $ext=substr($outfile,-3);
  38.  
  39.     switch($ext){
  40.       case 'jpg':
  41.         imagejpeg($im1,$outfile,$quality);
  42.         break;
  43.       case 'png':
  44.         imagepng($im1,$outfile);
  45.         break;
  46.       case 'gif':
  47.         imagegif($im1,$outfile);
  48.         break;
  49.       default:
  50.         echo 'not_file_type';
  51.         return false;
  52.     }
  53.  
  54.     imagedestroy($im);
  55.     imagedestroy($im1);
  56.     return true;
  57.   }
Джур Отправлено: 27 Января, 2009 - 08:36:26 • Тема: Как распарсить сложный XML? • Форум: Программирование на PHP

Ответов: 17
Просмотров: 3176
Не заморачивайтесь, заюзайте лучше simplexml_load_string(). я им такие вещи разбираю... Значит и вам поможет.
PHP:
скопировать код в буфер обмена
  1. <pre><?PHP
  2. $xml=simplexml_load_file('1.xml');
  3. print_r($xml->infoitem->text[1]);
  4. ?></pre>
Джур Отправлено: 25 Января, 2009 - 17:07:58 • Тема: парсер php? • Форум: Программирование на PHP

Ответов: 11
Просмотров: 514
Stierus пишет:
Какой класс для бота использовал ?

Как и все, WebIcqPro. Правда в этом году он у меня больше не подключается.
Джур Отправлено: 24 Января, 2009 - 21:44:38 • Тема: нашёл новый способ шаблонизации • Форум: Пользовательские функции

Ответов: 11
Просмотров: 802
Ну вы некроманты, подняли тему полугодовой давности Улыбка

Ch_chov пишет:
А каким образом вы определяете количество памяти и ресурсов, которые "жрет" скрипт?

разного рода top и xtop никто не отменял. Улыбка да и в РНР есть чем скорость/рессурсы замерить.

Страниц (29): В начало « ... 3 4 5 6 [7] 8 9 10 11 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB