2016-06-15 6 views
0

Guten Morgen alle, Ich versuche, eine HTML-Seite neu zu erstellen, die Daten aus einem Array extrahiert. Dies ist das ArrayStruktur der HTML-Seite aus dem Array neu erstellen

$MiniSiteStructureArray = array(
    'section_1' => array(
     'class' => 'main full', 
     'contents' => array(
      'img' => array(
       'class' => 'logo', 
       'src' => 'assets/images/logo-480x176.png' 
      ), 
      'div' => array(
       'class' => 'cover sfondo', 
       'img' => array(
        'class' => 'cover-image', 
        'src' => 'assets/images/cover-img-header.png' 
       ) 
      ), 
      'div_1' => array(
       'class' => 'cover-mob sfondo-mob', 
       'img' => array(
        'class' => 'cover-image-mob', 
        'src' => 'assets/images/cover-img-mobile.jpg' 
       ) 
      ), 
      'a' => array(
       'class' => 'button order light', 
       'div' => array(
        'class' => 'data-min', 
        'div' => array(
         'class' => 'label-holder', 
         'img' => array(
          'src' => 'assets/images/sfondo-cta.jpg' 
         ), 
         'p' => array(
          'class' => 'label', 
          'strong' => 'text' 
         ) 
        ), 
        'div_1' => array(
         'class' => 'price-holder' 
        ) 
       ) 
      ), 
      'div_2' => array(
       'class' => 'cta', 
       'p' => array(
        'class' => 'main-title', 
        'a' => array(
         'strong' => 'text' 
        ) 
       ) 
      ), 
      'img_1' => array(
       'class' => 'main-title', 
       'src' => 'assets/images/extra_1.png' 
      ) 
     ) 
    ), 
    'section_2' => array(
     'class' => 'gallery', 
     'id' => 'video', 
     'contents' => array(
      'p' => array(
       'class' => 'title video-title', 
       'span' => array(
        'strong' => 'text' 
       ) 
      ), 
      'div' => array(
       'class' => 'container', 
       'div' => array(
        'class' => 'arrow-container prev', 
        'img' => array(
         'class' => 'arrow', 
         'src' => 'assets/images/freccia-sx_1.png' 
        ) 
       ), 
       'div_1' => array(
        'class' => 'arrow-container next', 
        'img' => array(
         'class' => 'arrow', 
         'src' => 'assets/images/freccia-dx_1.png' 
        ) 
       ), 
       'div_2' => array(
        'class' => 'gallery-holder', 
        'div' => array(
         'class' => 'internal single', 
         'div' => array(
          'class' => 'gallery-item video', 
          'div' => array(
           'class' => 'wrapper video-wrapper', 
           'img' => array(
            'class' => 'play-vid pointer thumb', 
            'src' => 'assets/images/img-spot-tv.png' 
           ), 
           'img_1' => array(
            'class' => 'play-icon hover', 
            'src' => 'assets/images/play.png' 
           ) 
          ) 
         ) 
        ) 
       ) 
      ) 
     ) 
    ), 
    'section_3' => array(
     'class' => 'gallery', 
     'id' => 'image', 
     'contents' => array(
      'p' => array(
       'class' => 'title image-title', 
       'span' => array(
        'strong' => array(
         'strong' => 'text' 
        ) 
       ) 
      ), 
      'div' => array(
       'class' => 'container', 
       'div' => array(
        'class' => 'arrow-container prev', 
        'img' => array(
         'class' => 'arrow', 
         'src' => 'assets/images/freccia-sx_1.png' 
        ) 
       ), 
       'div_1' => array(
        'class' => 'arrow-container next', 
        'img' => array(
         'class' => 'arrow', 
         'src' => 'assets/images/freccia-dx_1.png' 
        ) 
       ), 
       'div_2' => array(
        'class' => 'gallery-holder', 
        'div' => array(
         'class' => 'internal single', 
         'div' => array(
          'class' => 'gallery-item', 
          'div' => array(
           'class' => 'wrapper image-wrapper', 
           'img' => array(
            'class' => 'thumb', 
            'src' => 'assets/images/img-1.png' 
           ), 
           'p' => array(
            'class' => 'caption image-caption', 
            'span' => 'text' 
           ) 
          ) 
         ) 
        ), 
        'div_1' => array(
         'class' => 'internal single', 
         'div' => array(
          'class' => 'gallery-item', 
          'div' => array(
           'class' => 'wrapper image-wrapper', 
           'img' => array(
            'class' => 'thumb', 
            'src' => 'assets/images/img-2.png' 
           ), 
           'p' => array(
            'class' => 'caption image-caption', 
            'span' => 'text' 
           ) 
          ) 
         ) 
        ), 
        'div_2' => array(
         'class' => 'internal single', 
         'div' => array(
          'class' => 'gallery-item', 
          'div' => array(
           'class' => 'wrapper image-wrapper', 
           'img' => array(
            'class' => 'thumb', 
            'src' => 'assets/images/img-3.png' 
           ), 
           'p' => array(
            'class' => 'caption image-caption', 
            'span' => 'text' 
           ) 
          ) 
         ) 
        ), 
        'div_i' => array(
         'class' => 'internal single', 
         'div' => array(
          'class' => 'gallery-item', 
          'div' => array(
           'class' => 'wrapper image-wrapper', 
           'img' => array(
            'class' => 'thumb', 
            'src' => 'assets/images/img-i.png' 
           ), 
           'p' => array(
            'class' => 'caption image-caption', 
            'span' => 'text' 
           ) 
          ) 
         ) 
        ), 
       ) 
      ), 
      'div_1' => array(
       'class' => 'counter' 
      ) 
     ) 
    ), 
    'section_4' => array(
     'class' => 'main', 
     'id' => 'info', 
     'contents' => array(
      'div' => array(
       'class' => 'cover sfondo', 
       'img' => array(
        'class' => 'cover-image', 
        'src' => 'assets/images/collection-img.jpg' 
       ) 
      ), 
      'div' => array(
       'class' => 'cover-mob sfondo-mob', 
       'img' => array(
        'class' => 'cover-image-mob', 
        'src' => 'assets/images/collection-img-mobile.jpg' 
       ) 
      ), 
      'a' => array(
       'class' => 'button order light', 
       'div' => array(
        'class' => 'data-min', 
        'div' => array(
         'class' => 'label-holder', 
         'img' => array(
          'src' => 'assets/images/sfondo-cta.jpg' 
         ), 
         'p' => array(
          'class' => 'label', 
          'strong' => 'text' 
         ) 
        ), 
        'div_1' => array(
         'class' => 'price-holder', 
        ) 
       ) 
      ), 
      'p' => array(
       'class' => 'text-numero-1', 
       'span' => array(
        'strong' => '', 
        'strong_1' => 'text', 
        'strong_2' => 'text', 
        'strong_3' => array(
         'class' => 'text-anziche', 
         'strike' => 'text' 
        ) 
       ) 
      ) 
     ) 
    ), 
    'section_5' => array(
     'class' => 'banner resize', 
     'id' => 'num1', 
     'contents' => array(
      'div' => array(
       'class' => 'cover' 
      ), 
      'div_1' => array(
       'class' => 'container', 
       'img' => array(
        'class' => 'banner-image', 
        'src' => 'assets/images/number-1.png' 
       ), 
       'p' => array(
        'class' => 'cta num1-cta', 
        'span' => array(
         'a' => 'text' 
        ) 
       ) 
      ) 
     ) 
    ), 
    'section_6' => array(
     'class' => 'gallery', 
     'id' => 'gifts', 
     'contents' => array(
      'p' => array(
       'class' => 'title gifts-title', 
       'span' => array(
        'strong' => array(
         'strong' => 'text' 
        ) 
       ) 
      ), 
      'div' => array(
       'class' => 'container', 
       'div' => array(
        'class' => 'arrow-container prev', 
        'img' => array(
         'class' => 'arrow', 
         'src' => 'assets/images/freccia-sx_1.png' 
        ) 
       ), 
       'div_1' => array(
        'class' => 'arrow-container next', 
        'img' => array(
         'class' => 'arrow', 
         'src' => 'assets/images/freccia-dx_1.png' 
        ) 
       ), 
       'div_2' => array(
        'class' => 'gallery-holder', 
        'div' => array(
         'class' => 'internal double', 
         'div' => array(
          'class' => 'gallery-item', 
          'div' => array(
           'class' => 'wrapper gifts-wrapper', 
           'img' => array(
            'class' => 'thumb', 
            'src' => 'assets/images/gift-1.jpg' 
           ), 
           'p' => array(
            'class' => 'caption gifts-caption', 
            'span' => 'text' 
           ) 
          ) 
         ), 
         'div_1' => array(
          'class' => 'gallery-item', 
          'div' => array(
           'class' => 'wrapper gifts-wrapper', 
           'img' => array(
            'class' => 'thumb', 
            'src' => 'assets/images/gift-2.jpg' 
           ), 
           'p' => array(
            'class' => 'caption gifts-caption', 
            'span' => 'text' 
           ) 
          ) 
         ) 
        ) 
       ) 
      ), 
      'div_1' => array(
       'class' => 'counter' 
      ), 
      'p' => array(
       'class' => 'disclaimer gifts-disclaimer', 
       'span' => array(
        'span' => 'text' 
       ) 
      ) 
     ) 
    ), 
    'section_7' => array(
     'class' => 'footer', 
     'contents' => array(
      'div' => array(
       'class' => 'container', 
       'div' => array(
        'class' => 'box', 
        'div' => array(
         'class' => 'wrapper', 
         'p' => array(
          'class' => 'icon pointer', 
          'img' => array(
           'src' => 'assets/images/icn-piano-opera.png' 
          ) 
         ), 
         'a' => array(
          'class' => 'link', 
          'p' => array(
           'class' => 'title', 
           'span' => 'text' 
          ) 
         ) 
        ) 
       ), 
       'div_1' => array(
        'class' => 'box', 
        'div' => array(
         'class' => 'wrapper', 
         'p' => array(
          'class' => 'icon pointer', 
          'img' => array(
           'src' => 'assets/images/icn-piano-opera.png' 
          ) 
         ), 
         'a' => array(
          'class' => 'link gtm-externallinks', 
          'p' => array(
           'class' => 'title', 
           'span' => 'text' 
          ) 
         ) 
        ) 
       ) 
      ) 
     ) 
    ), 
    'section_8' => array(
     'class' => 'partners resize', 
     'contents' => array(
      'div' => array(
       'class' => 'container', 
       'img' => array(
        'class' => 'partner', 
        'src' => 'assets/images/logo-dinsey-lucasfilm_2_1.png' 
       ), 
       'img_1' => array(
        'class' => 'partner', 
        'src' => 'assets/images/logo-mondadori_1_1.png' 
       ) 
      ) 
     ) 
    ), 
    'section9' => array(
     'class' => 'partners-light', 
     'contents' => array(
      'div' => array(
       'class' => 'container', 
       'img' => array(
        'class' => 'partner', 
        'src' => 'assets/images/copyrightLucasLight.png' 
       ) 
      ) 
     ) 
    )); 
foreach ($MiniSiteStructureArray as $section => $sectionStructure) { 
    foreach ($sectionStructure['contents'] as $tag => $contents) { 
     $tags[] = $tag; 
    } 
    $a = formatTag($tags); 
    $sections[] = $section; 
} 
$b = formatTag($sections); 

wie Sie HTML-Tags sind nicht gut ausgebildet (es. Div und div_1) sehen können, so habe ich diese Funktion erstellt

function formatTag($tags) { 
$correctTags = array(); 
foreach ($tags as $tag) { 
    switch ($tag) { 
     case strpos($tag, "img"): 
      $tag = "img"; 
      break; 
     case strpos($tag, "div"): 
      $tag = "div"; 
      break; 
     case strpos($tag, "a"): 
      $tag = "a"; 
      break; 
     case strpos($tag, "p"): 
      $tag = "p"; 
      break; 
     case strpos($tag, "section"): 
      $tag = "section"; 
      break; 
    } 
    array_push($correctTags, $tag); 
} 
return $correctTags; 
} 

meine Idee So ist neu das Array mit neuen Schlüsseln (well formed tag). Aber jetzt bin ich fest. Angenommen, die newKeysArray ist fertig und es wird angenommen, section_1 zu erstellen. Wie kann ich tun?

Dank

Edit: Neue Array

$structureArray = array(
    'tag' => 'section_8', 
    'class' => 'partners resize', 
    'contents' => array(
     'tag' => 'div', 
     'class' => 'container', 
     'contents' => array(
      'tag' => 'img', 
      'class' => 'partner', 
      'src' => 'assets/images/logo-dinsey-lucasfilm_2_1.png' 
     ) 
    ) 
); 

besser?

Edit_2: NewNewArray

$structureArray = array(
    'tag' => array(
     'tagName' => 'section_1', 
     'class' => 'main full', 
     'contents' => array(
      'tag' => array(
       'tagName' => 'img', 
       'class' => 'logo', 
       'src' => 'assets/images/logo-480x176.png' 
      ), 
     ), 
    ), 
    'tag_1' => array(
     'tagName' => 'div', 
     'class' => 'cover sfondo', 
     'contents' => array(
      'tag' => array(
       'tagName' => 'img', 
       'class' => 'cover-image', 
       'src' => 'assets/images/cover-img-header.png' 
      ) 
     ), 
    ), 
); 

Dies sollte besser sein, nicht denken Sie? In diesem Fall habe ich Schlüssel-Tag manuell erhöht, weil in HTML-Seite nicht

Edit_3_I_hope erscheint: NewNewNewArray

$structureArray = array(
    'tag' => array(
     'tagName' => 'section_1', 
     'tagAttributes' => array(
      'class' => 'main full', 
     ), 
     'contents' => array(
      'tag' => array(
       'tagName' => 'img', 
       'tagAttributes' => array(
        'class' => 'logo', 
        'src' => 'assets/images/logo-480x176.png' 
       ) 
      ), 
     ), 
    ), 
    'tag_1' => array(
     'tagName' => 'div', 
     'tagAttributes' => array(
      'class' => 'cover sfondo', 
     ), 
     'contents' => array(
      'tag' => array(
       'tagName' => 'img', 
       'tagAttributes' => array(
        'class' => 'cover-image', 
        'src' => 'assets/images/cover-img-header.png' 
       ) 
      ) 
     ), 
    ), 
); 

Nun, es scheint sehr gut

+0

Wie haben Sie das Array erhalten? Es ist eindeutig fehlerhaft. Es wäre schön, wenn es einen Hinweis darauf gäbe, ob etwas ein Tag oder ein Attribut ist. Sie haben keine Kontrolle über den Code, der das Array generiert? –

+0

Ich habe das Array basierend auf einer HTML-Seite erstellt. Wie kann ich die Qualität des Arrays verbessern? Zum Beispiel 'tag' => 'img'? Auf diese Weise hilft das Schlüssel-Tag mir, die Daten abzurufen? –

+0

Ah, gut, ja, es ist viel besser, den Array-Generator zu verbessern, also ist es einfacher, ihn wieder in HTML umzuwandeln. Ja, Ihr neues Array ist eine kleine Verbesserung, aber jetzt werden Sie Probleme mit der riesigen Menge von Attributen haben, die es gibt: "Klasse" ist sicherlich nicht die einzige. Aber warum HTML in ein Array und dann wieder in HTML verwandeln? Sie wissen, dass es bereits HTML-Parser für PHP gibt? –

Antwort

0

Mein Vorschlag für die Array-Struktur:

$htmlArray = ['tag' => ['name' => 'ul'], 
       'attrs' => [['name' => 'class','value' => 'beautiful_list'], 
          ['name' => 'id', 'value' => 'unique_list']], 
       'text' => ['tag' => ['name' => 'li' 
            'text' => 'item 1'], 
          'tag' => ['name' => 'li' 
            'text' => 'item 2']]]; 

Ich hoffe, das ist etwas klar?

Diese beiden entspricht:

array() 
[] 
+0

Ja, klar. Was denkst du über Edit Nummer 3? –