Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: флаш не понимает xml, созданный php
 
 автор: elenaki   (08.01.2008 в 11:48)   письмо автору
 
 

при создании XML средствами PHP и чтении этого XML Flash'ем последний перестает
понимать HTML-тэги. поле динамическое. стоит флажок "Разбирать как HTML", текст к
полю подключается методом htmlText, перед этим стоит команда поле.html = true. вообщем,
все как и было раньше. проблема в том, что созданный вручную XML с теми же тэгами
или просто строка, подставленная вместа нода как знaчение динамического поля, в ролике
выводится нормально - с учетом форматирования тэгами. но как только XML создает PHP
(текст тот же, тэги те же, кодировка та же долбаная UTF-8) - тэги выводятся как < и т.д.
и в базе и в XML техт виден с нормальными тэгами (<>), но если вывести текст трейсом, то
вместо скобок - &lt; и &gt; тэги в XML расположены в CDATA. и раньше так было (когда XML
создавался вручную) и все нормально читалось. всю голову уже сломала, что делать???

   
 
 автор: Drago   (08.01.2008 в 13:37)   письмо автору
 
   для: elenaki   (08.01.2008 в 11:48)
 

Может приведете часть скрипта ПХП?

   
 
 автор: elenaki   (08.01.2008 в 13:49)   письмо автору
 
   для: Drago   (08.01.2008 в 13:37)
 


    $sql = "INSERT INTO ".$db_prefix."site_content VALUES (
    Null, 
    '".$_POST["lang"]."',
    '".$_POST["menu_item"]."',
    '".addslashes($_POST["page_title"])."',
    '".addslashes($_POST["field"])."'
    )";
   // run SQL 
       $result = mysql_query($sql) or die(mysql_error()); 
    
    /// create XML
    $new_xml= '<?xml version="1.0" encoding="utf-8"?><content>';
  
  // mysql_query("SET NAMES greek");  // esli ybrat' comm - vivodit ??????? 
      $page_query = mysql_query("select * from ".$db_prefix."site_content where lang='".$_POST["lang"]."' and menu_item=".$_POST["menu_item"]) or die(mysql_error());
      $page = mysql_fetch_array($page_query);
    
    
    $page_title    = iconv("windows-1253", "UTF-8", stripslashes($page['page_title']));
    $page_text    = iconv("windows-1253", "UTF-8", stripslashes($page['page_text']));
    $menu_item    = $page['menu_item'];
    
        $new_xml .= "<page nomer='".$menu_item."' titlos='".$page_title."'><![CDATA[".$page_text."]]>";    
        $new_xml .= "</page>";
    $new_xml .= "</content>";
 
    if ($file=fopen("../../".$_POST["menu_item"]."_content_".$_POST["lang"].".xml","w")) 
    { 
    fputs ($file, $new_xml); 
    fclose($file); 
    }              
 


a TyT XML:


<?xml version="1.0" encoding="utf-8"?><content><page nomer='1' titlos='&#968;&#969;&#946;&#948;&#967;&#963;&#966;&#946;&#963;&#948;'><![CDATA[&#15370;&#20290;&#22852;&#53054;&#53123;&#52870;&#8371;&#47054;&#45774;&#46286;
&#34511;&#46030;&#48590;&#47054;&#52768;&#53172;&#52870;&#52925;&#15550;&#21587;
&#20306;&#18254;&#8254;&#46286;&#34511;&#46030;&#48590;&#12092;&#21587;&#20306;
&#18254;&#8254;&#46286;&#34511;&#46030;&#48590;&#46286;&#34511;&#15392;&#19781;
&#52798;&#53172;&#52870;&#52926;&#8381;&#46286;&#46030;&#47054;&#52768;&#52916;
&#52915;&#15543;&#17711;&#15949;&#52768;&#53172;&#23686;&#52770;&#53172;&#53126;
&#52873;&#8370;&#46286;&#34511;&#45774;&#46030;&#52768;&#53172;&#53123;&#52870;
&#52915;&#8370;&#8796;&#12092;&#20290;&#22852;>]]></page></content>


в базе при этом сохраняется все в греческой кодировке и я вижу текст в MySQL-Front.
в XML вижу в греческой кодировке только название, а текст, который в CDATA - квадратиками.
Флаш эти квадратики выводит как греческий текст, но и тэги выводит вместо того, чтобы
их выполнить (в трейсе тэги выводит как &lt; и &gt;)

вот, что выводит Flash в ролике и в трейсе

   
 
 автор: Drago   (08.01.2008 в 18:44)   письмо автору
 
   для: elenaki   (08.01.2008 в 13:49)
 

Вы уверены что текст в CDATA в греческой кодировке? Посмотрите на коды символов. Больше на китайский похоже.
Я так понял, ваши теги как раз в этом тексте?

   
 
 автор: elenaki   (08.01.2008 в 18:53)   письмо автору
 
   для: Drago   (08.01.2008 в 18:44)
 

а как на них посмотреть? Дрим показывает квадратики, в форуме вылезли какие-то коды, но во Флаше-то - греческий! когда создавала XML руками, Дрим показывал текст в читабельном виде. теперь только titlos можно прочитать в Дриме. дело в том, что текст создается админом в WYSIWYG'e, в то время как название - обычное текстовое поле. я уже и редактор другой прикрутила, думала, может, он так символы корежит...

   
 
 автор: Drago   (08.01.2008 в 19:02)   письмо автору
 
   для: elenaki   (08.01.2008 в 18:53)
 

На числовые идентификаторы символов посмотрите.
Вот к примеру, в заголовке коды символов в диапазоне 946 - 969. В то время как в остальном тексте, в диапазоне 8254 - 53172.

   
 
 автор: elenaki   (08.01.2008 в 19:03)   письмо автору
 
   для: Drago   (08.01.2008 в 19:02)
 

это я заметила. переконверитровала. получила иероглифы. а откуда Флаш берет греческий?!?!?!

   
 
 автор: Drago   (08.01.2008 в 19:22)   письмо автору
 
   для: elenaki   (08.01.2008 в 19:03)
 

Ну, как видно, ничего хорошего. :)

Я не знаю. Проверьте свои визуальные редакторы, в какой кодировке они сохраняют данные.

   
 
 автор: elenaki   (08.01.2008 в 19:28)   письмо автору
 
   для: Drago   (08.01.2008 в 19:22)
 

редакторы сохраняют текст в базу. в базе я тексты вижу нормально. кодировка в базе - "greek". вывод из базы в админе нормально показывает тексты. в XML запись идет после вывода из базы. так что редактор ни при чем. а вот функция iconv(), применяемая и к титлу и к тексту, работает только для титла, а текст не конвертирует. чертовщина какая-то...

   
 
 автор: Drago   (08.01.2008 в 19:37)   письмо автору
 
   для: elenaki   (08.01.2008 в 19:28)
 

Ну вот для эксперемента, попробуйте вместо своего WYSIWYG'а поставить обычное поле textarea. И добавить какой-нибудь текст.

   
 
 автор: elenaki   (08.01.2008 в 19:53)   письмо автору
 
   для: Drago   (08.01.2008 в 19:37)
 

ладно. завтра. тут у меня нет ни скрипта ни базы...

   
 
 автор: mihdan   (09.01.2008 в 10:38)   письмо автору
 
   для: elenaki   (08.01.2008 в 11:48)
 

У вас xml на 2х языках - китайский и греческий

   
 
 автор: elenaki   (09.01.2008 в 10:46)   письмо автору
 
   для: mihdan   (09.01.2008 в 10:38)
 

на одном.

проблема в CDATA. эта команда автоматически переводит символы скобок и
амперсанд в их коды... я сделала текстареа вместо окна редактора - результат тот же.
==========================================================================

CDATA в XML
В XML документах фрагмент помещённый внутрь CDATA это часть содержания элемента помеченная для парсера, что она содержит только символьные данные, не разметку. CDATA — это просто альтернативный синтаксис для отображения символьных данных, нет никакой смысловой разницы между символьными данными, которые объявлены как CDATA и символьными данным которые объявлены в обычном синтаксисе и где «<» и «&» будут представлены как «&lt;» и «&amp;», соответственно.

   
 
 автор: elenaki   (09.01.2008 в 11:03)   письмо автору
 
   для: elenaki   (09.01.2008 в 10:46)
 

&lt; < less than
&gt; > greater than
&amp; & ampersand
&apos; ' apostrophe
&quot; " quotation mark

их всего 5, этих запрещенных символов. наверно, надо во Флаше менять их. странно, никак
не могу добиться, чтобы Дрим показывал данные в CDATA в читабельном виде. но ведь
Flash их как-то понимает? черт бы побрал эту utf8! у меня какой-то кривой Дрим! сейчас открыла xml в блокноте и там видно текст! а Дрим рисует квадратики... хотя в свойствах страницы utf

   
 
 автор: elenaki   (09.01.2008 в 11:18)   письмо автору
 
   для: elenaki   (09.01.2008 в 11:03)
 

нашла пример загрузки CDATA во Flash. в аттаче. Дрим и в нем не показывает поле CDATA.
открываю в блокноте, добавляю руками свой текст с разметкой - Флаш берет! вставляю
текст из примера в свой xml - Флаш не берет! я счас свихнусь...

   
 
 автор: AlexSol   (09.01.2008 в 11:30)   письмо автору
 
   для: elenaki   (09.01.2008 в 11:18)
 

в дриме - Preferences/ New Document кодировка по умолчанию какая стоит?

   
 
 автор: elenaki   (09.01.2008 в 12:45)   письмо автору
 
   для: AlexSol   (09.01.2008 в 11:30)
 

зачем new document? я ведь открываю существующий. сейчас читает! ничего не меняла в
Дриме.

так. переписала во Флаше, чтобы читалось nodeValue, а не просто childNodes (хотя ведь и так читалось) и ... текст появляется! и даже отформатированный! теперь надо подправить редактор немножко, а то он кавычки в атрибутах не ставит и XML не читается.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования