2013-02-17 67 views
2
Example Text: This will be stored in the $_POST['x'] variable 
This is sentence one. 
This is sentence two. 
This is sentence three. 

如果我運行下面這這個代碼將返回的數組只有一個元素mysqli_real_escape_string阻止preg_split工作?

$x= mysqli_real_escape_string($db, $_POST['x']); 
$y= preg_split("/(\r\n|\n|\r)/", $x); 

但是,如果我運行此代碼下面它將正確將它分成所有3個元素。

$x = $_POST['x']; 
$y= preg_split("/(\r\n|\n|\r)/", $x); 

有沒有其他人經歷過這種現象?爲什麼會發生?編碼

+0

你爲什麼不輸出的前/後的$ _ POST [ 'X']和ÿ你可能會明白爲什麼 – 2013-02-17 21:57:53

回答

4

http://php.net/mysqli-real-escape-string
字符是NUL(ASCII 0),\ N,\ r \,」,」,與控制-Z。

這意味着換行符成爲\\n(LF), 。\\r(CR)和\\r\\n(CRLF)因此,他們不再匹配正則表達式

今後,RTM;)

+0

啊,這很有道理。不知何故,我錯過了 – jakecraige 2013-02-17 22:00:25

+0

@Constarr通常,轉義字符串將是在將值與mysql查詢連接起來之前調用的最後一個函數。 – datasage 2013-02-17 22:10:06

+0

是的,我明白了爲什麼。瞭解這可能會幫助我避免許多次錯誤。我很驚訝,我甚至知道現在發生了什麼。謝謝! – jakecraige 2013-02-17 22:24:48