摆脱字符串中的最后四个空行

时间:2013-11-19 15:29:11

标签: php string blank-line

我在Unix上有一个SQL文件,我从PHP开始,从开始到结束时将其删除,并使用AJAX将其返回到textarea。该文件是:

Set LINESIZE 1000
set timing on
set FEEDBACK off
SET PAGESIZE 50000
set COLSEP |
set trim on
set RECSEPCHAR ~

select * from tbvalid_value where discrete_code like '%  %' and DISCRETE_CODE != 'U - Unreturned  and billed'
;

exit;

exit;之后我有另一个空白行。

我想要返回的只是select语句:

select * from tbvalid_value where discrete_code like '% %' and DISCRETE_CODE != 'U - Unreturned and billed'

要做到这一点,首先我用这个函数砍掉前8行:

function str_chop_lines($str, $lines = 8) {
    return implode("\n", array_slice(explode("\n", $str), $lines));
};

$sql = str_chop_lines($sqlString);

这会删除所有Set语句和空白的第8行。

然后,我想摆脱字符串的最后部分(从;exit;)。为此,我正在使用它:

$finalSql = substr($sql, 0, strpos($sql, ';'));

但是当我将字符串返回到客户端textarea时,我在它的末尾会得到4个空白行,如图所示(我添加了红线以说明4个空行):

Blank Lines

我试图用不同的方法修剪这些线条:

$sqlReturnByAjax = substr($finalSql, 0, strrpos($finalSql, "\n"));

$sqlReturnByAjax = str_replace('/n/n', '/n', $finalSql);

$sqlReturnByAjax = rtrim($finalSql);

但这些都不起作用 我错过了什么?

2 个答案:

答案 0 :(得分:1)

为什么不只是trim字符串?

echo trim($yourString);

它从行的开头和结尾删除换行符,空格等。 Trim

答案 1 :(得分:0)

如果服务器上的文件内容是

Set LINESIZE 1000
set timing on
set FEEDBACK off
SET PAGESIZE 50000
set COLSEP |
set trim on
set RECSEPCHAR ~

select * from tbvalid_value where discrete_code like '%  %' and DISCRETE_CODE != 'U - Unreturned  and billed'
;

exit;

并且你只想要以SELECT语句开头的行,你可以使用PHP的file()将文件读入一个行数组,然后找到你需要的那一行。 E.g:

$sql = '';
$file = file('/path/to/file', FILE_IGNORE_NEWLINES);

foreach($file as $line) {
  if(strpos($line, 'select') === 0) {
    $sql = $line;
    break;
  }
}