| |
|
|
| | Вобщем такая проблема
class MyClass {
var $allOK = FALSE;
var $Fin = FALSE;
var $array_img = array();
var $imageName = "";
function startElement($parser, $tagName, $attrs)
{
if($tagName=='IMAGE')
{
$this->array_img=$attrs;
$this->allOK = TRUE;
}
else
$this->allOK = FALSE;
$this->Fin = FALSE;
}
function endElement($parser, $tagName)
{
$this->Fin = FALSE;
if($this->allOK == TRUE AND $tagName=='IMAGE')
{
$extension = pathinfo($this->array_img['PATH']);
$extension["extension"] = ".".$extension["extension"];
$file = basename($this->array_img['PATH'], $extension["extension"]);
$this->imageName=$file;
$this->Fin = TRUE;
}
$this->allOK = FALSE;
}
}
function FromXmlPath($filename, & $array_name)
{
$xml_parser = xml_parser_create("");
$rss_parser = new MyClass();
xml_set_object($xml_parser, &$rss_parser);
xml_set_element_handler($xml_parser, "startElement", "endElement");
$fp = fopen($filename, "r") or die("Error reading data!");
$i=0;
$array_name = array();
while($data = fread($fp, 100))
{
xml_parse($xml_parser, $data, feof($fp)) or die("Error parsing RSS data!");
if($rss_parser->Fin == TRUE)
{
if($i!=0)
{
if($array_name[$i-1]==$rss_parser->imageName)
$array_name[$i]=$rss_parser->imageName;
$i++;
}
}
}
fclose($fp);
}
|
в данный момент эта функция должна читать в каждом тэге атрибут PATH а потм все значения занести в $array_name но вот в чем штука если увеличить значение в fread($fp, 100) то возможно что не все атрибуты запишутся в массив если слишком маленький то будут повторный ! конечно можно просто повторные удалить но такой варант не устраивать ((( как быть | |
| |
|
|
| |
|
|
| |
для: himera7
(04.03.2007 в 23:39)
| | | fgets(), file_get_contents() ..... | |
| |
|
|
| |
|
|
| |
для: bronenos
(04.03.2007 в 23:48)
| | | нет так не подходит в дальнешем надо буде полностью обрабатывть xml | |
| |
|
|
| |
|
|
| |
для: himera7
(05.03.2007 в 00:48)
| | | Ну вот, читайте полностью весь XML-файл функцией file_get_contents() и обрабатывайте. Если, конечно, memory_limit позволяет. | |
| |
|
|