2011-11-09 37 views
0

我想读的文本块的最后一行,例如:腓SUBSTR和修剪

250-SIZE 31457280

250-AUTH LOGIN CRAM-MD5

250 OK

这里是我当前的代码 - 它只读取的第一行:

if (substr(trim($res), 0, 3) != "250") { 

给予

250-SIZE 31457280

的输出我想要得到的最后

250 OK

(有没有空行在它之间是我的复制粘贴问题)。任何想法?

+0

你使用哪种api读取数据?您可能对http://docs.php.net/fgets或http://docs.php.net/socket_read(使用PHP_NORMAL_READ)感兴趣,以逐行获取结果。 – VolkerK

回答

0

我是否正确地认为$res = '250-SIZE 31457280 250-AUTH LOGIN CRAM-MD5 250 OK'

如果是,那么下面应该成为你的目的:

$last_set = substr($res, (strlen(trim($res)) - 6), strlen(trim($res))); 

这将输出250 OK

+0

是的,他们是在单独的行,但代码的工作? –

+0

是的,这应该仍然有效 - 虽然我只用'\ n'文字测试过它。 – BenM

+0

好的,谢谢我需要更多的帮助 –

0

,以获得最后的“250”从尝试

$string="250-SIZE 31457280 250-AUTH LOGIN CRAM-MD5 250 OK" 
echo substr($string, strlen($string)-6, 3) 
0

你可能会爆炸的“\ n”的结果,如果不同,就取数组的最后一个元素

$arr = explode("\n",$res); 
$lastone = $arr[count($arr)-1]; 

替换换行符你的系统,但应该罚款我的经验

0

如果你想知道250 OK的发生是否在最后,你可以尝试扭转你寻找的字符串和你搜索的字符串n(否则你将不得不打字寻找难以阅读的KO 052)

if (strpos(strrev($res), strrev('250 OK')) === 0) // 0 since it should be at start, but not false 
{ 
    ... do things 
}