dumber
Постоялец
- Регистрация
- 23 Апр 2007
- Сообщения
- 272
- Реакции
- 124
- Автор темы
- #1
Понадобилось решение для хранения разных конфиг данных в одном поле БД. Для этого удобно юзать xml стандарт запись <key>val</key> чтобы выдирать данные с БД по отдельным конфигам (с название key) нужен был класс для парснга этого xml кода, попробовал юзануть DOM оказалось это все равно что на танк Т80 плуг приделывать, пахать то будет но **х он такой нужен. Порыскал поинету выдалось куча классов, использующих черт зна какие мульки (тот же DOM только старой версии) чтобы не прарится ибо задача не сложная, написал 2 собственные функции по конвертации данных, вот собсно и они:
как видите кода мало, а пользы много (если вы конечно выбрали xml для хранения собственных данных.
Надеюсь окажется полезным...
Если чо понадобится обращайтесь
PHP:
public function ArrayToXML($array)
{
$RetStr = "";
foreach($array as $key=>$val)
{
if(is_array($val))
{
$RetStr .= "<$key>".$this->ArrayToXML($val)."</$key>";
}
else
{
$RetStr .= "<$key>$val</$key>";
}
}
return $RetStr;
}
public function XMLtoArray($xmlStr)
{
$ArrRet = array();
// Using regular expressions we are trying to get all tags and data
preg_match_all("/<([^>]+)>(.*)<\/\\1>/is", $xmlStr, $result, PREG_SET_ORDER);
foreach($result as $item)
{
if(preg_match("/<([^>]+)>(.*)<\/\\1>/is", $item[2]))
{
$ArrRet[$item[1]] = $this->XMLtoArray($item[2]);
}
else
{
$ArrRet[$item[1]] = $item[2];
}
}
return $ArrRet;
}
как видите кода мало, а пользы много (если вы конечно выбрали xml для хранения собственных данных.
Надеюсь окажется полезным...
Если чо понадобится обращайтесь