2014-03-03 233 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:更新了答案。 –