![]() |
|
||||||||||
|
|||||
|
День добрый, обращаюсь из флеша к пхп, отправляю ему запись, хотелось бы что бы она записывалсь в реальную хмлку (если вдруг у кого инть окажется под рукой скрипт или исходник).. Ну это в идеале, если нет то укажите плиз команды по которым следует поискать, а то в пхп вообще 0.(отправить данные в виде хмла флешу я могу и сам, а вот то бы хмл создался и лежал в папочке с пхпшкой пока нет).
З.Ы. Вот файл как я отправляю данные в виде хмл флешу: <?php echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?>"; $startdirname = "e:/films/Films"; $linkname = "ftp://192.168.1.1/Films/Films"; recopendir($startdirname); function toUTF($str) { $str=iconv("windows-1251", "utf-8", $str); return $str; } function recopendir($dirname) { if($dir=opendir($dirname)) { global $startdirname; global $linkname; $folder = str_replace($startdirname."/", "", $dirname); // тут важное echo "<folder name = \"".toUTF($folder)."\" >"; while ($file=readdir($dir)) { if (eregi(".avi$|.mkv$|.vob$",$file)) echo "<item film = \"".toUTF($file)."\" link = \"".toUTF($linkname."/".$folder."/".$file)."\" />"; if (is_dir($dirname."/".$file) && ($file != ".") && ($file != "..")) recopendir($dirname."/".$file); } closedir($dir); echo "</folder>"; } } ?> Последний раз редактировалось nOobCrafter; 15.04.2009 в 14:19. |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 317
|
мдя. честно говоря не вглядывался в ваш исходник.
ну есть 2 варианта:изобретать велосипед или использовать модули XML парсинга. В первом варианте посмотрите функции работы с файлами. как пример тут ну или собственно в справочнике. Во втором варианте,раз нам надо запись в XML, значит модуль DOM (Document Object Module). вот пример гостевой с XML. тут или в справочнике. |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 257
|
Последний раз редактировалось artem_fs; 15.04.2009 в 18:49. |
|
|||||
|
artem_fs спасибо большое, именно то как я и хотел), а то стандартные парсинги меня несколько пугают своими названиями)
..хм рано обрадовался, неработает, хмлка не генерится((( <?php
$startdirname = "D:\FilmZzz";
$linkname = "ftp://192.168.1.1/Films/Films";
recopendir($startdirname);
function recopendir($dirname)
{
if($dir=opendir($dirname))
{
global $startdirname;
global $linkname;
$folder = str_replace($startdirname."/", "", $dirname); // тут важное
$toXML .= "<folder name = \"".$folder."\" >";
while ($file=readdir($dir))
{
if (eregi(".avi$|.mkv$|.vob$",$file))
$toXML .= "<item film = \"".$file."\" link = \"".$linkname."/".$folder."/".$file)."\" />";
if (is_dir($dirname."/".$file) && ($file != ".") && ($file != ".."))
recopendir($dirname."/".$file);
}
closedir($dir);
$toXML .= "</folder>";
}
}
writeXML('n.xml', $toXML);
function writeXML($filename, $xml){
$xmlStart = '<?xml version="1.0" encoding="utf-8"?>'."\n<item>\n\n";
$xmlEnd = '</item>';
$toxml = $xmlStart.$xml.$xmlEnd;
$toxml = iconv("windows-1251", "UTF-8", $toxml);
$myfile = fopen ($filename, "w+");
fwrite ($myfile, $toxml);
fclose ($myfile);
}
?>
Последний раз редактировалось nOobCrafter; 15.04.2009 в 19:14. |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 257
|
а атрибуты папки какие стоят? проверь так:
|
|
|||||
|
Регистрация: Mar 2009
Сообщений: 317
|
а почему вы решили после выхода из функции recopendir переменная $toXML, которую вы передаете writeXML существует.
Предлагаю вставить внутрь функции recopendir |
|
|||||
|
duhowka я честно гря пробовал и так:
<?php $startdirname = "D:\FilmZzz"; $linkname = "ftp://192.168.1.1/Films/Films"; $toXML = ""; .... recopendir($startdirname); echo $toXML; // думал тут что то выведет, но нет ?> З.Ы. та функция рекурсивная, имхо плохо будет елси 10-15 раз писать в файл. |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 257
|
хм, странно что не создается, я на локальной машине никогда не работал правда, может путь надо полный указывать?
у меня эта функция работает (writeXML), если файла нету, она создает его. |
|
|||||
|
artem_fs нет, хмлка должна генериться в папке с пхп, адрес к фильмам это просто для пхп, что бы он знал где искать, сам он лежит в папке с содержимым сайт (htdocs) не создается.
З.Ы. там еще не верно определяется $toXML я почти поправил но код чуть папзжее выложу. ----------------------- Вот рабочий вариант <?php
$toXML = ""; // обьявляю на всякий случай тут
$startdirname = "e:/films/Films";
$linkname = "ftp://192.168.1.1/Films/Films";
function toUTF($str)
{
$str=iconv("windows-1251", "utf-8", $str);
return $str;
}
function recopendir($dirname)
{
if($dir=opendir($dirname))
{
global $startdirname;
global $linkname;
global $toXML;
$folder = str_replace($startdirname."/", "", $dirname); // тут важное
$toXML .= "<folder name = \"".toUTF($folder)."\" >";
while ($file=readdir($dir))
{
if (eregi(".avi$|.mkv$|.vob$",$file))
$toXML .= "<item film = \"".toUTF($file)."\" link = \"".toUTF($linkname."/".$folder."/".$file)."\"
/>";
if (is_dir($dirname."/".$file) && ($file != ".") && ($file != ".."))
recopendir($dirname."/".$file);
}
closedir($dir);
$toXML .= "</folder>";
}
}
function writeXML($filename, $xml){
$xmlStart = '<?xml version="1.0" encoding="utf-8"?>'."\n<items>\n\n";
$xmlEnd = '</items>';
$toX = $xmlStart.$xml.$xmlEnd; // данные уже в кодировке utf-8 так что тут еще раз не конверчу
$myfile = fopen ($filename, "w+");
fwrite ($myfile, $toX);
fclose ($myfile);
}
recopendir($startdirname);
writeXML('server.xml', $toXML);
?>
Последний раз редактировалось nOobCrafter; 16.04.2009 в 17:29. |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:23. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|