PHP: Convert <ul> <li> Baum-HTML-Tags in ein array
Ich bin mit jsTree und ich brauche, um zu konvertieren HTML-tag-Struktur-code <ul> <li>
an ein PHP-array.
Der jsTree-HTML-tag wird übergeben an PHP geparst, und speichern Sie in einem strukturierten Baum PHP-array(siehe unten den PHP-array Struktur).
Zusätzliche Frage: Ist meine gewünschte PHP-array Struktur gut oder können Sie empfehlen eine gute Struktur? Ich bin offen für Vorschläge.
Vielen Dank im Voraus 🙂
Cheers,
Daneben
jsTree Screenshot:
HTML-Tree String:
<ul class="ltr">
<li id="phtml_1" class=" open">
<a style="" class=" " href="#"><ins> </ins>Folder 1</a>
<ul>
<li class="leaf" id="phtml_2">
<a style="" class=" " href="#"><ins> </ins>Child 1.1</a>
</li>
<li class="open" id="phtml_3">
<a style="" class=" " href="#"><ins> </ins>Folder 1.1</a>
<ul>
<li class="leaf last" rel="default">
<a href="" style="" class=" "><ins> </ins>Child 1.1.1</a>
</li>
</ul>
</li>
<li class="last open" rel="default">
<a href="" style="" class=" "><ins> </ins>Folder 1.2</a>
<ul>
<li class="leaf" rel="default">
<a href="" style="" class=" "><ins> </ins>Child 1.2.1</a>
</li>
<li class="leaf last" rel="default">
<a href="" style="" class=" "><ins> </ins>Child 1.2.2</a>
</li>
</ul>
</li>
</ul>
</li>
<li id="phtml_5" class="file open">
<a style="" class=" " href="#"><ins> </ins>Folder 2</a>
<ul>
<li class="leaf" rel="default">
<a href="" style="" class=" "><ins> </ins>Child 2.1</a>
</li>
<li class="leaf last" rel="default">
<a href="" style="" class="clicked"><ins> </ins>Child 2.2</a>
</li>
</ul>
</li>
<li class="leaf last" rel="default">
<a href="" style="" class=" "><ins> </ins>Outer Child</a>
</li>
</ul>
PHP-Array Struktur:
<?php
$tree_array = array(
'Folder 1' => array(
'Child 1.1',
'Folder 1.1' => array(
'Child 1.1.1'
),
'Folder 1.2' => array(
'Child 1.2.1',
'Child 1.2.2'
),
),
'Folder 2' => array(
'Child 2.1',
'Child 2.2'
),
'Outer Child'
);
echo '<pre>',print_r($tree_array),'</pre>';
?>
PHP print_r Ausgabe:
Array
(
[Folder 1] => Array
(
[0] => Child 1.1
[Folder 1.1] => Array
(
[0] => Child 1.1.1
)
[Folder 1.2] => Array
(
[0] => Child 1.2.1
[1] => Child 1.2.2
)
)
[Folder 2] => Array
(
[0] => Child 2.1
[1] => Child 2.2
)
[0] => Outer Child
)
- I. e. Sie beginnen mit einem fragment von HTML und wollen, um am Ende mit einem PHP-array?
- Ja. Ich bin momentan dabei, einen jsTree-editor mit den Schaltflächen zum hinzufügen, Bearbeiten, löschen, verschieben, kopieren, einfügen und umbenennen von Funktionen. Nach dem Bearbeiten der user, die ich brauche, um speichern Sie die HTML-tag-Baumstruktur. Mein problem ich habe eine harte Zeit Parsen der string HTML-Tags und speichern Sie es in einem PHP-array.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bezug:
Schlage ich vor, dass Sie ein HTML-parser, wie simplehtmldom. Dies ermöglicht es Ihnen, um die traverse über das HTML-DOM so wie Sie wollen.
Hier ist eine quick-and-dirty UL-walking-Skript:
Seinem Ausgang, nicht genau so, wie Sie es wollte, aber in der Nähe:
array( "label" => "Folder 1", "children" => array( ) );
. Schwierig wird!Anstelle von messing mit html sollten Sie die Struktur von Daten in einer mehr-Programmierer-freundliche format.
Nur für referecence: es gibt auch ein jQuery-plugin zum serialisieren eines HTML-DOM-Baum der <ol> und <ul> Listen:
http://www.drakedata.com/serializetree/sampleTree.html - es wandelt eine verschachtelte Struktur von <ol> und <ul> Listen, um eine Zeichenfolge, die verwendet werden kann als eine zugehörige php-array.
Wenn Sie haben eine UL -, die nicht enthalten alle href-Elemente (z.B. nur text nexted ul).. ich hab eingestellt Salman ist simplehtmldom code zu arbeiten: