Задать вопрос
@Get_Nick

Как перевести многомерный массив в многомернный обьект с заменой ключей?

<?
$html = '<ul>\n<li>Сиз бухгалтерия ҳисобини юритишни ўрганиш истагидамисиз?</li>\n<li>Сиз уйда ўтириб, юқори маошли қўшимча иш қилмоқчимисиз?</li>\n<li>Сиз ўқиш давомида амалиёт етишмаётганини сезяпсизми?</li>\n<li>Келажакда фарзандингиз солиқ ва бухгалтерия счетларини осон тушуниши тарафдоримисиз?</li>\n</ul>\n<p>Унда марҳамат! <strong>“АВСО”</strong> мактаби сизга бу борада ёрдамга тайёр!</p>\n<p>&nbsp;</p>\n<p><strong>Бизнинг мактабда:</strong></p>\n<ul>\n<li>Инновацион технологиялар ёрдамидаги ўқув машғулоти</li>\n<li>4 босқичли бухгалтерия ҳисоби ва солиққа тортиш тизимининг корхона мисолида ёритилиши</li>\n<li>Бухгалтерия дастурлари (1 С 7.7 &#8211; 8.3 )да бемалол ишлай олиш имкони</li>\n<li>Банк клиент тизими ва электрон ҳисобот топшириш тажрибаси</li>\n</ul>\n<p><strong>Шошилинг, энг замонавий инновацион технологиялар ёрдамидаги дарс ҳамда амалий машғулотлар “АВСО” бухгалтерлар мактабида!</strong></p>\n<p>Бу ҳали ҳаммаси эмас, <strong>200-84-85, 142-84-85</strong> рақамига қўнғироқ қилинг ёки <a href=\"http://abco.uz/\"><strong>www.abco.uz</strong></a>  сайтимизга кириб биринчи бўлиб рўйхатдан ўтинг.</p>\n<p>Биринчи бўлиб рўйхатдан ўтган 10 киши бепул дарсимиз иштирокчисига айланади.</p>\n<p>Ҳа, айтганча, мактабимизда иқтидорли ўқувчиларнинг иш билан таъминланиши кафолатланади!</p>\n<p><strong>Келинг, кўринг ва амин бўлинг!</strong></p>\n<p style=\"text-align: right;\"><em>Реклама ҳуқуқи асосида</em></p>\n';
function walk($output, \DOMNode $node, $depth = 0)
{
 if ($node->hasChildNodes()) {
     $children = $node->childNodes;
     foreach ($children as $child) {
         if ($child->nodeType === XML_TEXT_NODE) {
            $output[] = $child->textContent; // заменил тело в условии
         }

         $output[] = $child->nodeName;
         $item = walk(array(), $child, $depth + 1);
         if (!empty($item)) {
             $output[] = $item;
         }
     }
 }
 return $output;
}

$dom = new DOMDocument;
$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));

$root = $dom->getElementsByTagName('body')->item(0);
$output = walk(array(), $root, 0);



function recursiveRemoval(&$array, $val)
{
    if(is_array($array))
    {
        foreach($array as $key=>&$arrayElement)
        {
            if(is_array($arrayElement))
            {
                recursiveRemoval($arrayElement, $val);
            }
            else
            {
                if($arrayElement == $val)
                {
                    unset($array[$key]);
                }
            }
        }
    }
}

function recursiveTag(&$array, $val)
{
    if(is_array($array))
    {
        foreach($array as $key=>&$arrayElement)
        {
            if(is_array($arrayElement))
            {
                recursiveRemoval($arrayElement, $val);
            }
            else
            {
                if($arrayElement == $val)
                {
					change_key($key, 'tag', $arrayElement, false);
                }
            }
        }
    }
}

function change_key($key,$new_key,&$arr,$rewrite=true){
    if(!array_key_exists($new_key,$arr) || $rewrite){
        $arr[$new_key]=$arr[$key];
        unset($arr[$key]);
        return true;
    }
        return false;
}

recursiveRemoval($output, '#text');
recursiveRemoval($output, '\n');
recursiveTag($output, 'strong');

print_r($output);
?>


Пытаюсь заменить ключи но ничего не выходит. Подскажите пожалуйста что не так, где поправить?
Цель подготовить статью для публикации в телеграф.
  • Вопрос задан
  • 39 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Astatroth
@Astatroth
Я тут случайно
Есть же Гугл, в самом деле... Вот, например.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы