php - query - mysql replace where



用PHP替換\ r \ n (4)

我有一個帖子表單,它將我的文本插入MySQL數據庫。

我用

$post_text = mysql_real_escape_string(htmlspecialchars($_POST['text']));

並想要替換自動添加的\r\n

我試過了

$text = str_replace('\\r\\n','', $text);
$text = str_replace('\r\n','', $text);
$text = str_replace('\\R\\N','', $text);
$text = str_replace('\R\N','', $text);
$text = str_replace('/\r\\n','', $text);
$text = str_replace('/r/n','', $text);
$text = str_replace('/\R\\N','', $text);
$text = str_replace('/R/N','', $text);

\r\n始終包含在我的數據庫條目中。

我怎樣才能解決這個問題?

https://ffff65535.com


對於MySQL數據庫,您不應該替換任何東西。

  • 如果它只是$post_text文字\r\n - 它沒關係,它是SQL查詢的正確格式。
  • 如果$post_text中的\\r\\n成為數據庫中的\r\n - 你已經將你的字符串轉義兩次 ,不應該替換任何東西,而是去掉過多的轉義

所以,你必須在插入前的$post_text使它看起來像\r\n in,並且你可以在輸出之前對它應用nl2br()函數。


也嘗試

$text = str_ireplace(array("\r","\n",'\r','\n'),'', $text);

我建議在處理數據庫條目時使用strtr()進行多次替換。 也可以使用@Spudley建議的雙引號。

$text = strtr($text, array(
          "\r\n" => "",
          "\r" => "",
          "\n" => "",
          "\t" => " "));

strtr() - >替換子字符串後,將不再搜索其新值。

http://php.net/strtr

str_replace() - >如果search是一個數組而replace是一個字符串,那麼這個替換字符串將用於搜索的每個值。 但是反過來沒有意義。

http://php.net/str_replace


   if (!is_numeric($value)) {
        $value = mysql_real_escape_string(trim($value));
        $value = str_replace("\\r\\n",'', $value);
    }




replace