2014-03-03 290 views
0

我有一個字符串,我可是從包含一些座標Xcode中,檢索之前刪除空行,當字符串被插入到數據庫中它顯示爲:PHP插入到數據庫

(
    "37.351701,-122.105898", 
    "37.351945,-122.106109", 
    "37.352183,-122.106338" 
) 

我需要的字符串, :

37.351701,-122.105898, 
37.351945,-122.106109, 
37.352183,-122.106338 

im使用str_replace函數,它消除了(),但空行被留:

//empty line 
37.351701,-122.105898, 
37.351945,-122.106109, 
37.352183,-122.106338 
//empty line 

我使用的代碼,如何刪除空行?

<?php 
$conn = mysql_connect($host, $user, $pass); 
@mysql_select_db($db) or die("Unable to find database"); 
$trackArray = $_GET["trackArray"]; 

$trackArrayOutput = str_replace(array('"', '(' , ')', ' ', '\n', '\r', '\n\r'), '', $trackArray); 

$query = "INSERT INTO routes VALUES ('', '$trackArrayOutput')"; 

mysql_query($query) or die (mysql_error("error")); 
mysql_close(); 
?> 
+1

使用TRIM()函數在PHP –

回答

1
\n\r

不是結尾的有效線;你的意思是CRLF - \r\ntrim()也是去除開始/尾部空白和換行非常有用:

$trackArrayOutput = str_replace(array('"', '(' , ')'), '', $trackArray); 
$trackArrayOutput = trim($trackArrayOutput); 
+0

很簡單,工作perfe ctly – Ernie

2
$myvar = " cool huh ?  "; 

//trim it 
$myvar = trim($myvar); 

//now echo 
echo $myvar ; //result will be 

cool huh? 
+0

@Fabio是的,我想這與一些文本文件 –

2

你遇到一個PHP疑難雜症

array('"', '(' , ')', ' ', '\n', '\r', '\n\r') 

到:

從改變你的更換

array('"', '(' , ')', ' ', "\n", "\r") 

'\n'不給你newline字符。您需要"讓PHP評估字符串。

對於澄清:var_dump('\n' === "\\n"); // true


注意,輸出將是:

37.351701,-122.105898,37.351945,-122.106109,37.352183,-122.106338 

所以一切都是在一行上。

+0

沒有注意到這一點。 +1 –

+0

這不會產生結果OP一直在尋找。 –

+0

也不對喬治的解決方案 - 爲第一行縮進將丟失。我認爲使用適當的系列化,無論是'serialize'或'json_encode'將是一般更好的解決方案。 – Halcyon

1

CRLF不會單引號之間時工作。

要取代它們,使用 「\ r \ n」 不是 '\ r \ n'。

這是一個骯髒的黑客工具,也可以幫助你:

function noNl($string){ 
    return str_replace("<br />","",nl2br($string)); 
} 
1
$trackArray = trim($_GET["trackArray"]); 
$query = "INSERT INTO routes VALUES ('', '$trackArrayOutput')"; 
1

分割問題的若干步驟:

// convert all newlines to '\n' 
$str = str_replace(array("\n","\r","\r\n"), "\n", $str); 

// remove first line 
$str = substr($str, strpos($str, "\n")+1); 

// remove last line 
$str = substr($str, 0,strrpos($str, "\n")-1); 

// remove the spaces 
$str = str_replace(' ', '', $str); 

Online demo

+0

'PHP_EOL'是平臺相關的:PHP主機的平臺,而不是源文件的平臺。由於假設任何東西都可能是最好的,所以取代所有組合似乎不合邏輯。 – Halcyon

+0

@FritsvanCampen:更新了答案。 –