2012-07-07 87 views
1

我编写了一些表单来发送文本到MySql。我的问题之一是保持线路中断。在Google上发现了一些代码,但我不知道如何使用它。有些尝试不是很成功。在Textarea和MySQL上保留换行符

我发现的代码是下面我不知道如何设置。

function my_nl2br($string){ 
    $string = str_replace("\n", "<br />", $string); 
     if(preg_match_all('/\<pre\>(.*?)\<\/pre\>/', $string, $match)){ 
      foreach($match as $a){ 
      foreach($a as $b){ 
      $string = str_replace('<pre>'.$b.'</pre>', "<pre>".str_replace("<br />", "", $b)."</pre>", $string); 
      } 
     } 
    } 
return $string; 
} 

我发现的另一个代码是这个,但如果我尝试从数据库中读取它,换行符将不起作用。

if (isset($_POST['submit'])) 
{ 
    $text = trim($_POST['text']); 
    $text = stripslashes($text); 
    $text = htmlspecialchars($text); 

    echo 'you entered:<br><br>' . nl2br($text); 
} 

这是我的代码,我想植入它。

if(isset($_POST['title'])) 
     { 
     $title = mysql_real_escape_string(htmlspecialchars($_POST['title'])); 
     $description = mysql_real_escape_string(htmlspecialchars($_POST['description'])); 
     $applepart = mysql_real_escape_string(htmlspecialchars($_POST['applepart'])); 
     $partnumber = mysql_real_escape_string(htmlspecialchars($_POST['partnumber'])); 
     $productcode = mysql_real_escape_string(htmlspecialchars($_POST['productcode'])); 
     $compatibility = mysql_real_escape_string(htmlspecialchars($_POST['compatibility'])); 
     $url_bild = mysql_real_escape_string(htmlspecialchars($_POST['url_bild'])); 
     $price = mysql_real_escape_string(htmlspecialchars($_POST['price'])); 
     $insert = mysql_query("INSERT INTO `adressbuch` (`title`,`description`,`applepart`,`partnumber`,`productcode`,`compatibility`,`url_bild`,`price`) VALUES ('$title','$description','$applepart','$partnumber','$productcode','$compatibility','$url_bild','$price')"); 
     if (!$insert) 
     { 
      die('Eintrag konnte nicht gespeichert werden: ' . mysql_error()); 
     } 
     } 

    ?> 

    <form method="POST" action="?page= "> 
     <span>Neuer Eintrag:</span> <br /> 
     <span>Title</span><input type="text" name="title" /> <br /> 
     <span>Description</span><textarea cols="16" rows="5" name="description"></textarea> <br /> 
     <span>Apple Part</span><input type="text" name="applepart" /> <br /> 
     <span>Part Number</span><input type="text" name="partnumber" /> <br /> 
     <span>Product Code</span><input type="text" name="productcode" /> <br /> 
     <span>Compatibility</span><input type="text" name="compatibility" /> <br /> 
     <span>Image</span><input type="text" name="url_bild" /> <br /> 
     <span>Price</span><input type="text" name="price" /> <br /> 
     <input type="submit" value="Speichern"/> <br /> 
    </form> 

欢呼家伙

+0

是在应该是一些HTML代码textarea的输入?如果是这样,则必须使用_br_标记指定HTML中的换行符。如果输入是纯文本的,则必须将其转义。也许我不明白你的问题。 – acondolu 2012-07-07 18:15:55

+0

不应该只是纯文本 – kara 2012-07-07 18:17:20

+0

好吧,那么我认为你应该HTML转义'$ _POST ['title']',然后应用'nl2br'并最终sql转义。 – acondolu 2012-07-07 18:23:27

回答

3

要存储在数据库中标题,尝试:

$title = real_escape_string(nl2br(htmlspecialchars($_POST['title']))); 
+0

哦操作,你明白了:) – acondolu 2012-07-07 18:36:15