#php
#php
Вопрос:
Я хочу прочитать последнюю строку блока текста, например:
250-РАЗМЕР 31457280
250-CRAM ДЛЯ АВТОРИЗАЦИИ-MD5
250 ОК
Вот мой текущий код — он читает только первую строку:
if (substr(trim($res), 0, 3) != "250") {
Предоставление выходных данных
250-РАЗМЕР 31457280
Я хочу получить последний
250 ОК
(между ними нет пустых строк, это моя проблема с копипастой). Есть идеи?
Комментарии:
1. Какой API вы используете для чтения этих данных? Возможно, вас заинтересует docs.php.net/fgets или docs.php.net/socket_read (с помощью PHP_NORMAL_READ), чтобы получить результат построчно.
Ответ №1:
Прав ли я, думая об этом $res = '250-SIZE 31457280 250-AUTH LOGIN CRAM-MD5 250 OK'
?
Если это так, то следующее должно служить вашей цели:
$last_set = substr($res, (strlen(trim($res)) - 6), strlen(trim($res)));
Это приведет к выводу 250 OK
.
Комментарии:
1. Да, это все еще должно работать — хотя я тестировал это только с использованием
n
литералов.
Ответ №2:
чтобы получить последние «250» из try
$string="250-SIZE 31457280 250-AUTH LOGIN CRAM-MD5 250 OK"
echo substr($string, strlen($string)-6, 3)
Ответ №3:
вы могли бы разбить результат на » n» и взять последний элемент массива
$arr = explode("n",$res);
$lastone = $arr[count($arr)-1];
замените linebreak, если отличается в вашей системе, но, по моему опыту, должно быть нормально
Ответ №4:
Если вы хотите знать, встречается ли в конце значение 250 OK, вы могли бы попробовать изменить местами как строку, которую вы ищете, так и строку, в которой вы выполняете поиск (иначе вам пришлось бы ввести look для KO 052, который трудно прочитать)
if (strpos(strrev($res), strrev('250 OK')) === 0) // 0 since it should be at start, but not false
{
... do things
}