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

时间:2014-03-03 13:18:15

标签: 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

我使用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();
?>

6 个答案:

答案 0 :(得分:2)

$myvar = " cool huh ?     ";

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

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

cool huh?

答案 1 :(得分: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

所以一切都在一条线上。

答案 2 :(得分:1)

\n\r不是有效的结尾行;你的意思是CRLF - \r\ntrim()对于删除开始/尾随空格和换行符非常有用:

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

答案 3 :(得分:1)

单引号之间CRLF无效。

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

这是一个可以帮助的肮脏黑客:

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

答案 4 :(得分:1)

$trackArray = trim($_GET["trackArray"]);
$query = "INSERT INTO routes VALUES ('', '$trackArrayOutput')";

答案 5 :(得分: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