0

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>

一連のフォームテキストエリアを介して「編集可能な」セクションを更新できるようにしたいと思います。これにはまだ少し作業が必要ですが、私が持っている限りでは次のとおりです。

<?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>
&nbsp;<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>

私はこの答えがもう少し複雑であることを知っていますが、助けていただければ幸いです。

4

1 に答える 1

1

私があなたが達成したいことを正しく理解しているかどうかわからない。しかし、私はjqueryでそれを行うようです。

次のような「編集可能な」クラスを持つすべてのhtml要素を取得できます。

$(".editable")

あなたはそれらを繰り返すことができます:

$(".editable").each(function(index){
    alert($(this).text()); // or .html()
    // etc... do your stuff
});

すべてのデータがphp配列にある場合。jsonを使用してクライアントに渡す必要があります。javascriptタグ内でphpprintを使用します。

<?php

print "var phparray = " . json_encode($myphparray);

?>

クライアント側(javascript)で作業する方がいいと思います。サーバーの作業負荷(PHP)を下げます。

しかし、私が言ったように、私はあなたが達成したいすべてを把握したとは思いません。

于 2012-12-07T19:32:36.267 に答える