Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Заковыка с переменными внутри цикла.
#1
Уважаемые форумчане.

Нужда заставила писать себе парсер XML на PHP.
Парсер должен, в итоге, разбирать скормленный ему XML по частям, подставлять в нужные части загруженые из MySQL данные и генерировать на выходе HTML страницу с этим измененным XML.

Нашел парсер, который просто разбирает и выводит 1 в 1 XML через HTML.

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

Имеется следующий проблемный код.

PHP код:
<?php 
function startElement($parser, $name, $attribs)
{
echo
"&lt;<font color=\"#0000cc\">$name</font>";
if (
count($attribs)) {
$f = "12345-6;";

foreach (
$attribs as $k => $v) {
if (
$k == "id") {
$f = $v;
}
if (
$v == "skill") {
echo
" <font color=\"#009900\">$k</font>=\"<font
color=\"#ff0000\">
$v</font>\"";
echo
" <font color=\"#009900\">val</font>=\"";
echo
"<font color=\"#ff0000\">$f</font>\"";
break;
}
else {
echo
" <font color=\"#009900\">$k</font>=\"<font
color=\"#990000\">
$v</font>\"";
}
}
}
echo
"&gt;";
}

который превращает строки:
Цитата:<set name='weight' val='150' />
<set name='material' val='wood' />
<set name='crystal_type' val='none' />
<set name='sellable' val='false' />
<set name='dropable' val='false' />
<set name='skill' val='21045-1;3267-1;23051-1;' />

в
Цитата:<set name='weight' val='150'>
<set name='material' val='wood'>
<set name='crystal_type' val='none'>
<set name='sellable' val='false'>
<set name='dropable' val='false'>
<set name='skill' val='12345-6;'>


Проблема в том, что код видит присвоение значения переменной только перед циклом, т.е
Код:
$f = "12345-6;";
В том время, как дополнительное условие внутри цикла foreach
Код:
if ($k == "id") {
                $f = $v;
            }

не видит. Подскажите, как мне можно при соблюдения условия, передать значение $f в строку
Цитата:echo "<font color=\"#ff0000\">$f</font>\"";

С уважением.
Ответ
#2
для работы с XML пользуемся SimpleXML либо DOM
http://php.net/manual/en/book.simplexml.php
http://php.net/manual/en/book.dom.php
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)