2016-06-28 6 views
1

私はユーザからコード入力を受け取り、他のいくつかのサンプルコードと一致するはずのプログラムを作成しています。コード。私は、ユーザーコードを印刷するときであるとのトラブルを抱えています部分は、すべてが印刷されますが、代わりにインデントと改行の、これが印刷されている。この一方コードをエコーするPHPプログラムを作成するのに助けが必要

<!DOCTYPE html>\r\n <script src=\"https://code.jquery.com/jquery-3.0.0.min.js\" integrity=\"sha256-JmvOoLtYsmqlsWxa7mDSLMwa6dZ9rrIdtrrVYRnDRH0=\" crossorigin=\"anonymous\"></script>\r\n<html>\r\n <head>\r\n <meta charset=\"utf-8\" />\r\n <title>CodeType</title>\r\n </head>\r\n <body> 

が入力されている(と私はと何をしたいです最終的な結果は):ここでは

<!DOCTYPE html> 
<script src="https://code.jquery.com/jquery-3.0.0.min.js" integrity="sha256-JmvOoLtYsmqlsWxa7mDSLMwa6dZ9rrIdtrrVYRnDRH0=" crossorigin="anonymous"></script> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
     <title>CodeType</title> 
    </head> 
    <body> 

は私のコードです:

 <?php include "database.php"; ?> 
     <?php 

    if(isset($_POST['submit'])){ 
     $title = mysqli_real_escape_string($con, $_POST['title']); 
     $code = mysqli_real_escape_string($con, $_POST['code']); 
     $samplecode = mysqli_real_escape_string($con, $_POST['samplecode']); 

     $query = "INSERT INTO `assignments` (`title`, `code`) VALUES ('$title', '$code')"; 

     $cleanCode = str_replace("\r\n", "<br/>" , htmlentities($code)); 
     if(mysqli_query($con, $query)){ 
      if($code = $samplecode){ 
       echo $cleanCode; 
      } 
     } else { 
      echo "fails"; 
     } 
    } 

    ?> 

    <body> 

    <br/> 
     <form method = "post" action = ""> 
      <label id = "title">Title</label> 
      <br/> 
      <input type="text" class="txtInput" name = "title"/> 
      <br/> 
      <br/> 
      <label id = "stuff">Code</label> 
      <br/> 
      <textarea placeholder="Type your code in here" name = "code"></textarea> 
      <br/> 
      <br/> 
      <br/> 
      <label id = "samplecode">Sample testing</label> 
      <br/> 
      <textarea placeholder="Type your test code in here" name = "samplecode"></textarea> 
      <br/> 
      <input type="submit" name = "submit" value="Submit"/> 

      <pre><?php echo $cleanCode ?></pre> 
     </form> 

    </body> 
    <script> 
     $(document).ready(function(){ 
      $('.txtInput').bind("paste",function(e) { 
        e.preventDefault(); 
      }); 
      $("button").on("click", function(){ 
       if($(#txtInput).text() == $(#code).text()){ 
        alert("Working"); 
       } else { 
        alert("Failure"); 
       } 
      }); 
     }); 

    </script> 

</html> 

任意のアイデア?

+0

を、 '\ rを\は文字通りn'sありますそこ? –

+0

はい、実際には\ r \ nsがあります – sahmed

+0

これを試してください:$ cleanCode = str_replace( "\ r \ n"、 "
"、htmlentities($ code)); \ 0 "、"
"、htmlentities($ _ POST ['code'])); ' –

答えて

0

背景情報:

  1. C、PHP おそらくのように(私はそれのための参照を見つけ、まだ...していないので、そのように言った)だけ\n\r\n/\n変換。
    (異なる配列をthe OS.に応じて改行のために使用される)

  2. mysqli_real_escape_string()escapes \r and \n, among others


それが何を意味するのか:

  • を我々は\r\nを交換する必要はありません。むしろ\nを置き換えるべきです。

  • mysqli_real_escape_string()は、改行文字をエスケープするため、データベースに関連しないものについては、$_POST['code'];を使用する必要があります。


TL; DR

$cleanCode = str_replace("\r\n", "<br/>" , htmlentities($code)); 

がなければならない:コードの先頭ブロックで

$cleanCode = str_replace("\n", "<br/>" , htmlentities($_POST['code'])); 
+0

私はあなたのコードスニペットを使っていますが、私はまだ同じ問題を抱えています。その他の提案はありますか? – sahmed

+0

@sahmed:Ok。私はより多くの情報を得ている間、一時的に削除するつもりです... –

関連する問題