Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Evgenka

Recommended Posts

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

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

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

$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 выглядит следующим образом

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 ) )

 

Надіслати
Поділитися на інших сайтах


  В 03.08.2017 в 17:00, chukcha сказав:

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

 

Expand  

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

Надіслати
Поділитися на інших сайтах


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

$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 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.