0

助けが必要です、助けが必要です。Webページでtinyeditorjqueryを使用してみましたが、エディターのコンテンツはデータベースに正常に送信されますが、htmlマークアップが使用されています。データベースからデータを取得して別のページに表示しようとすると、すべてのhtmlタグが付いたコンテンツが表示されます。これを修正してフォーマットされたテキストとして表示するにはどうすればよいですか?ありがとう。

使用されるtinyeditorスクリプト

<script>
new TINY.editor.edit('editor',{
id:'input', // (required) ID of the textarea
width:584, // (optional) width of the editor
height:175, // (optional) heightof the editor
cssclass:'te', // (optional) CSS class of the editor
controlclass:'tecontrol', // (optional) CSS class of the buttons
rowclass:'teheader', // (optional) CSS class of the button rows
dividerclass:'tedivider', // (optional) CSS class of the button diviers
controls:['bold', 'italic', 'underline', 'strikethrough', '|', 'subscript', 'superscript', '|', 'orderedlist', 'unorderedlist', '|' ,'outdent' ,'indent', '|', 'leftalign', 'centeralign', 'rightalign', 'blockjustify', '|', 'unformat', '|', 'undo', 'redo', 'n', 'font', 'size', 'style', '|', 'image', 'hr', 'link', 'unlink', '|', 'print'], // (required) options you want available, a '|' represents a divider and an 'n' represents a new row
footer:true, // (optional) show the footer
fonts:['Verdana','Arial','Georgia','Trebuchet MS'],  // (optional) array of fonts to display
xhtml:true, // (optional) generate XHTML vs HTML
cssfile:'style.css', // (optional) attach an external CSS file to the editor
content:'starting content', // (optional) set the starting content else it will default to the textarea content
css:'body{background-color:#ccc}', // (optional) attach CSS to the editor
bodyid:'editor', // (optional) attach an ID to the editor body
footerclass:'tefooter', // (optional) CSS class of the footer
toggle:{text:'source',activetext:'wysiwyg',cssclass:'toggle'}, // (optional) toggle to markup view options
resize:{cssclass:'resize'} // (optional) display options for the editor resize
});

</script>

<script>
var editor = new TINY.editor.edit('editor', {
id: 'tinyeditor',
width: 500,
height: 175,
cssclass: 'tinyeditor',
controlclass: 'tinyeditor-control',
rowclass: 'tinyeditor-header',
dividerclass: 'tinyeditor-divider',
controls: ['bold', 'italic', 'underline', 'strikethrough', '|', 'subscript', 'superscript', '|',
    'orderedlist', 'unorderedlist', '|', 'outdent', 'indent', '|', 'leftalign',
    'centeralign', 'rightalign', 'blockjustify', '|', 'unformat', '|', 'undo', 'redo', 'n',
    'font', 'size', 'style', '|', 'link', 'unlink', '|', 'print'],
footer: false,
fonts: ['Verdana','Arial','Georgia','Trebuchet MS'],
xhtml: true,
cssfile: 'custom.css',
bodyid: 'editor',
footerclass: 'tinyeditor-footer',
resize: {cssclass: 'resize'}
      }
);

</script>

データベースに投稿するフォーム

<form action="upload_poetry.php" method="post"
 enctype="multipart/form-data">
                <table width="100%" height="137" border="0" cellpadding="5" cellspacing="5">

                  <tr>
                    <td align="right" valign="top"><strong>Poem:</strong></td>
                    <td>.
                      <label for="tinyeditor"></label>
                    <textarea name="tinyeditor" id="tinyeditor" cols="45" rows="5"></textarea></td>
                </tr>
                  <tr>
                    <td>&nbsp;</td>
                    <td><input type="submit" name="button" id="button" value="Submit"  onclick="editor.post()"/></td>
                </tr>

              </table>
              </form>

データベースへの挿入に使用されるコード

<?php
include ('config.php');

$poem=$_POST['tinyeditor'];


$sql= "insert into poetry ( poem)values('$poem')";
$query=mysqli_query($dbC, $sql) or die(mysqli_error());
if ($query){

$msg = "Entry submitted pending Admin approval";
    header("location:poem.php?msg=$msg");
}
else{$msg = "Not submitted Please retry";
    header("location:poem.php?msg=$msg");}


?>

データベースから取得するために使用されるコード

<?php
                     include('config.php');
                     if (isset($_GET['id'])){
                     $id = $_GET['id'];
                     $sql = "SELECT * FROM poetry where title_id=$id";
                     $query = mysqli_query($dbC, $sql) or die(mysqli_error());
                     while($row = mysqli_fetch_array($query)){

                          $poem = $row['poem'];

                     }

                     ?>
                     <table width="50%" border="0" cellspacing="1" cellpadding="1">
                       <tr>
                       <td><strong>Poem:</strong></td>
                         <td colspan="4"><textarea id="" name="" ><?php echo $poem ?></textarea> </td>
                       </tr>

                     </table>
                       <?php
                     }
                     echo "<p><a href='index.php>Select an applicant to view his/her particulars</a></p>";
                     ?>
4

2 に答える 2

0

みなさん、ありがとうございました。以下に示すように、html_entity_decodeコードを使用して問題を解決することができました。$poetryはデータベースから取得したデータです。

                         `$orig = $poetry;
                          $a = htmlentities($orig);

                        $poem = html_entity_decode($a);`

結果をテキストエリアではなくdivタグにエコーします。

<div> <?php echo $poem; ?> </div> 

本当にあなたの助けに感謝します

于 2013-01-20T23:00:53.043 に答える
0

HTML が HTML エンコードされた DB に送信されたようです。フォーマットされた文字列として戻したい場合は、次を使用しますhtml_entity_decode

$textFromDB = "&lt;span&gt;Some text&lt;/span&gt;";
$decodedHTML = html_entity_decode($textFromDB);
echo $decodedHTML;

Some textこれは、次のように、テキストを含む span 要素を出力します。

<span>Some text</span>

参照先html_entity_decode: http://php.net/manual/en/function.html-entity-decode.php

htmlentitiesそのページには、文字列の HTML エンコーディングを処理する関数へのリンクもあります。

于 2013-01-20T01:36:08.580 に答える