把我的头发拉在这里...
我需要使用 PHP 在两个不同的点将一堆 html 插入到另一组 html 中。
$a 从另一个类的函数返回给我。我需要将$b 插入$a,使$b 元素成为$a 的一些元素的父元素。
<?php
$a = '
<div id="one">
<div id="two">
<div id="three">Hi</div>
</div>
</div>
';
$b = '
<div id="red">
<div id="blue"></div>
</div>
<div id="green">
<div id="yellow">there</div>
</div>
';
?>
最终需要:
<?php
$c = '
<div id="one">
<div id="two">
<div id="red">
<div id="blue">
<div id="three">Hi</div>
</div>
</div>
<div id="green">
<div id="yellow">there</div>
</div>
</div>
</div>
';
?>
注意 $b 是如何插入到 $a 中的,使所有的 $ba 子成为“二”。但同时,“三”变成了“蓝”的孩子。“green”和“yellow”保持原来的关系,但现在嵌套在“two”之下。
现实世界的例子......
<?php
$a = '
<div class="ginput_complex ginput_container">
<span class="ginput_full">
<input name="input_5" id="input_4_5" type="file" value="" class="medium" tabindex="5">
<label for="input_4_5" class="ginput_post_image_file">File</label>
</span>
<span class="ginput_full ginput_post_image_title">
<input type="text" name="input_5.1" id="input_4_5_1" value="" tabindex="6">
<label for="input_4_5_1">Title</label>
</span>
<span class="ginput_full ginput_post_image_caption">
<input type="text" name="input_5.4" id="input_4_5_4" value="" tabindex="7">
<label for="input_4_5_4">Caption</label>
</span>
<span class="ginput_full ginput_post_image_description">
<input type="text" name="input_5.7" id="input_4_5_7" value="" tabindex="8">
<label for="input_4_5_7">Description</label>
</span>
</div>
';
$b =
'
<div class="container">
<div class="row fileupload-buttonbar">
<div class="span7">
<span class="btn btn-success fileinput-button">
<i class="icon-plus icon-white"></i>
{{{{{{{{ THIS IS WHERE I MY FILE INPUT SHOULD GO }}}}}}}}}}}
</span>
<button type="submit" class="btn btn-primary start">
<i class="icon-upload icon-white"></i>
<span>Start upload</span>
</button>
<button type="reset" class="btn btn-warning cancel">
<i class="icon-ban-circle icon-white"></i>
<span>Cancel upload</span>
</button>
<button type="button" class="btn btn-danger delete">
<i class="icon-trash icon-white"></i>
<span>Delete</span>
</button>
</div>
</div>
</div>
';
$doc = new DOMDocument;
$doc->loadHTML($a);
$x = new DOMXPath($doc);
?>
我正在使用 $x->query('//*[@id="input_4_5"]') 到达我想要开始工作的节点。从那里开始,我一直在使用新的 DOMElement 和 importNode 以及 appendChild、replaceChild 和 insertBefore 的变体来尝试遍历 DOM 树。但坦率地说,即使我确实成功地遍历了它,我也无法弄清楚如何插入/附加我正在使用的大块代码。