PHP在插入数据库之前删除空行

PHP在插入数据库之前删除空行,php,mysql,string,str-replace,Php,Mysql,String,Str Replace,我从包含一些坐标的xcode中检索到一个字符串,当该字符串插入数据库时,它显示为: ( "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 l

我从包含一些坐标的xcode中检索到一个字符串,当该字符串插入数据库时,它显示为:

(
    "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();
?>
\n\r不是有效的行尾;您的意思是CRLF-\r\n。修剪对于删除开头/结尾空白和换行符也非常有用:

$trackArrayOutput = str_replace( array('"', '(' , ')'), '', $trackArray);
$trackArrayOutput = trim($trackArrayOutput);
你遇到了一个PHP问题

将您的替代者更改为:

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

“\n”不会给您换行符。您需要PHP对字符串求值

请澄清:var\u dump'\n'=\\n;//真的

请注意,输出将为:

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

因此,所有内容都在一行上。

CRLF在单引号之间不起作用

要替换它们,请使用:\r\n而不是“\r\n”

下面是一个肮脏的黑客程序,也有帮助:

function noNl($string){
    return str_replace("<br />","",nl2br($string));
}

将问题分为不同的步骤:

// 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);

使用phpDidn中的trim函数时,请不要注意这一点+1这不会产生OP想要的结果。George的解决方案也不会-第一行的缩进将丢失。我认为使用适当的序列化,不管是serialize还是json_encode,通常都是更好的解决方案。PHP_EOL依赖于平台:PHP主机的平台,而不是源文件的平台。因为假设任何东西似乎都不合逻辑,所以最好替换所有的组合。@FritsvanCampen:更新了答案。
function noNl($string){
    return str_replace("<br />","",nl2br($string));
}
$trackArray = trim($_GET["trackArray"]);
$query = "INSERT INTO routes VALUES ('', '$trackArrayOutput')";
// 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);