PHP在插入数据库之前删除空行
我从包含一些坐标的xcode中检索到一个字符串,当该字符串插入数据库时,它显示为: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
(
"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);