Перейти к содержанию
Evgenka

[Решено] Составить условие проверки

Рекомендуемые сообщения

Пытаюсь автоматизировать работу с отслеживанием посылок. 

Второй день бьюсь, и не могу составить правильное условие проверки, получена ли посылка

Вот так ошибочно

$source = file_get_contents('https://webservices.belpost.by/searchRu/vv162235936by');
preg_match_all('|<span id="GridInfo0_(.*?)</span>|i', $source, $m); 

if ((preg_match_all('|Поступило в участок обработки почты|i', $m[0][4]) or preg_match_all('|Поступило в участок обработки почты|i', $m[0][5])) && (!preg_match_all('|РУПС|i', $m[0][4]) or !preg_match_all('|ОПП|i', $m[0][4]) or !preg_match_all('|УООП|i', $m[0][4]) or !preg_match_all('|ЦОПП|i', $m[0][4]) or !preg_match_all('|Центр|i', $m[0][4]) or !preg_match_all('|УПС|i', $m[0][4]) or !preg_match_all('|РУПС|i', $m[0][5]) or !preg_match_all('|ОПП|i', $m[0][5]) or !preg_match_all('|УООП|i', $m[0][5]) or !preg_match_all('|ЦОПП|i', $m[0][5]) or !preg_match_all('|Центр|i', $m[0][5]) or !preg_match_all('|УПС|i', $m[0][5]))){
echo "Не поступил<br><br>";
} else {
echo "Поступил<br><br>";
}

Вот так тоже ничего не вышло естественно

if ((strpos($m[0][5], 'Поступило в участок обработки почты') !== false && strpos($m[0][5], 'РУПС') === false) or (strpos($m[0][5], 'Поступило в участок обработки почты') !== false && strpos($m[0][5], 'ОПП') === false) or (strpos($m[0][5], 'Поступило в участок обработки почты') !== false && strpos($m[0][5], 'УООП') === false) or (strpos($m[0][5], 'Поступило в участок обработки почты') !== false && strpos($m[0][5], 'ЦОПП') === false) or (strpos($m[0][5], 'Поступило в участок обработки почты') !== false && strpos($m[0][5], 'Центр') === false) or (strpos($m[0][5], 'Поступило в участок обработки почты') !== false && strpos($m[0][5], 'УПС') === false) or (strpos($m[0][4], 'Поступило в участок обработки почты') !== false && strpos($m[0][4], 'РУПС') === false) or (strpos($m[0][4], 'Поступило в участок обработки почты') !== false && strpos($m[0][4], 'ОПП') === false) or (strpos($m[0][4], 'Поступило в участок обработки почты') !== false && strpos($m[0][4], 'УООП') === false) or (strpos($m[0][4], 'Поступило в участок обработки почты') !== false && strpos($m[0][4], 'ЦОПП') === false) or (strpos($m[0][4], 'Поступило в участок обработки почты') !== false && strpos($m[0][4], 'Центр') === false) or (strpos($m[0][4], 'Поступило в участок обработки почты') !== false && strpos($m[0][5], 'УПС') === false)){

 

Как только не пробовал составлять, ничего не выходит, не хватает знаний видимо

Нужно сделать проверку в массиве $m[0][4] и $m[0][5] на отсутствие в них "РУПС", "ОПП", "УООП", "ЦОПП", "Центр", "УПС" и присутствие "Поступило в участок обработки почты"

Что бы выполнялось

Array ( [0] => 01. Принято почтовое отправление в (220307) [1] => 07. Принято в (200400) из (220307) [2] => 08. Передано из (200400) в (212000) Могилев ОПП [3] => 06. Поступило в участок обработки почты (212000) Могилев ОПП [4] => 06. Поступило в участок обработки почты (213530) Чериков РУПС [5] => 06. Поступило в участок обработки почты (213533) Чериков - 2)

И при таком раскладе - не выполнялось

Array ( [0] => 01. Принято почтовое отправление в (220307) [1] => 07. Принято в (200400) из (220307) [2] => 08. Передано из (200400) в (212000) Могилев ОПП [3] => 06. Поступило в участок обработки почты (212000) Могилев ОПП [4] => 06. Поступило в участок обработки почты (213530) Чериков РУПС [5] => 06. Поступило в участок обработки почты (2135305) ОПП)

 

Не могу даже понять, как лучше искать, при помощи preg_match_all или используя strpos.

 

Буду благодарен за любой совет.

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$m[0][4]) -это номера строк со страницы html?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смотрите что в $m

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
50 минут назад, buslikdrev сказал:

$m[0][4]) -это номера строк со страницы html?

 

Да. preg_match_all создает массив $m. $m[0][4] это номера строк

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$m выглядит следующим образом

Array ( [0] => Array ( [0] => 01. Принято почтовое отправление в (220307) [1] => 07. Принято в (200400) из (220307) [2] => 08. Передано из (200400) в (212000) Могилев ОПП [3] => 06. Поступило в участок обработки почты (212000) Могилев ОПП [4] => 06. Поступило в участок обработки почты (213530) Чериков РУПС [5] => 06. Поступило в участок обработки почты (213533) Чериков - 2 [6] => 10. Вручено (213533) Чериков - 2 ) [1] => Array ( [0] => ctl02_Label1">01. Принято почтовое отправление в (220307) [1] => ctl03_Label1">07. Принято в (200400) из (220307) [2] => ctl04_Label1">08. Передано из (200400) в (212000) Могилев ОПП [3] => ctl05_Label1">06. Поступило в участок обработки почты (212000) Могилев ОПП [4] => ctl06_Label1">06. Поступило в участок обработки почты (213530) Чериков РУПС [5] => ctl07_Label1">06. Поступило в участок обработки почты (213533) Чериков - 2 [6] => ctl08_Label1">10. Вручено (213533) Чериков - 2 ) )

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

проще второе условие проверять не регуляркой а strpos

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, chukcha сказал:

проще второе условие проверять не регуляркой а strpos

 

Пытался и так, пример в первом посте, но опять же не вышло

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пробуйте так:

$source = file_get_contents('https://webservices.belpost.by/searchRu/vv162235936by');
preg_match_all('|<span id="GridInfo0_(.*?)</span>|i', $source, $m);

var_dump($m);
echo '<br>';

$arr = $m[0];
var_dump($arr);
echo '<br>';

foreach ($arr as $text) {
	echo $text.'<br>';
	$bad = preg_match('~(Центр)|(УПС)|(ОПП)~',$text);
	echo $bad;

	echo '<br>';
	$good = preg_match('~(Поступило в участок обработки почты)~',$text);
	echo $good;
	echo '<br>';

	$test = ($good && !$bad) ? "Бегом на почту!" : "Фигвам!";
	echo $test;
	echo '<br>-----<br>';
	
	if ($good && !$bad) {
		$flag = "Итог проверки - Бегом на почту за посылкой!";
	}
}

echo $flag;

писал для наглядности, лишнее уберете сами ;)

и проверку флага на существование в конце не забудьте!

  • +1 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Огромное человеческое! То, что нужно!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.