我正在开发一种工具来替换html文档中的标记区域。我已经看了几个php模板系统,但它们并不是我想要的,所以这就是我所追求的"引擎"系统的。模板本身没有php,我在文件中搜索关键字“可编辑”'设置可更新的区域。我不想使用数据库存储任何内容,而是从html文件本身读取所有内容。
它还有一些方面需要解决,但最重要的是,我需要在可编辑的数组中迭代的部分。区域并更新模板文件。
这是test.html(用于测试目的的模板文件):
<html>
<font class="editable">
This is editable section 1
</font>
<br><br><hr><br>
<font class="editable">
This is editable section 2
</font>
</html>
我希望能够更新可编辑的&#39;部分通过一组形式textareas。这还需要一些工作,但就我而言:
<?php
function g($string,$start,$end){
preg_match_all('/' . preg_quote($start, '/') . '(.*?)'. preg_quote($end, '/').'/i', $string, $m);
$out = array();
foreach($m[1] as $key => $value){
$type = explode('::',$value);
if(sizeof($type)>1){
if(!is_array($out[$type[0]]))
$out[$type[0]] = array();
$out[$type[0]][] = $type[1];
} else {
$out[] = $value;
}
}
return $out;
};
// GET FILES IN DIR
$directory="Templates/";
// create a handler to the directory
$dirhandler = opendir($directory);
// read all the files from directory
$i=0;
while ($file = readdir($dirhandler)) {
// if $file isn't this directory or its parent
//add to the $files array
if ($file != '.' && $file != '..')
{
$files[$i]=$file;
//echo $files[$i]."<br>";
$i++;
}
};
//echo $files[0];
?>
<div style="float:left; width:300px; height:100%; background-color:#252525; color:#cccccc;">
<form method="post" id="Form">
Choose a template:
<select>
<?php
// Dropdown of files in directory
foreach ($files as $file) {
echo "<option>".$file."</option>"; // do somemething to make this $file on selection. Refresh page and populate fields below with the editable areas of the $file html
};
?>
</select>
<br>
<hr>
Update these editable areas:<br>
<?php
$file = 'test.html'; // make this fed from form dropdown (list of files in $folder directory)
$html = file_get_contents($file);
$start = 'class="editable">';
$end = '<';
$oldText = g($html,$start,$end);
$i = 0;
foreach($oldText as $value){
echo '<textarea value="" style="width: 60px; height:20px;">'.$oldText[$i].'</textarea>'; // create a <textarea> that will update the editable area with changes
// something here
$i++;
};
// On submit, update all $oldText values in test.html with new values.
?>
<br><hr>
<input type="submit" name="save" value="Save"/>
</div>
<div style="float:left; width:300px;">
<?php include $file; // preview the file from dropdown. The editable areas should update when <textareas> are updated ?>
</div>
<div style="clear:both;"></div>
我知道这个答案有点复杂,但我真的很感激任何帮助。
答案 0 :(得分:1)
不确定我是否正确理解了您想要实现的目标。但似乎我会在jquery中这样做。
您可以获取具有“editable”类的所有html元素,如下所示:
$(".editable")
您可以使用以下内容进行迭代:
$(".editable").each(function(index){
alert($(this).text()); // or .html()
// etc... do your stuff
});
如果您拥有php数组中的所有数据。您只需要使用json将其传递给客户端。在javascript标签中使用php print。
<?php
print "var phparray = " . json_encode($myphparray);
?>
我认为将工作放在客户端(javascript)会更好。它将降低服务器工作负载(PHP)。
但正如我所说,我不认为我已经掌握了你想要的一切。