Помогите написать регулярное выражения для парсера

repacksman

Участник
Регистрация
12 Июн 2012
Сообщения
154
Реакции
4
Помогите написать регулярное выражения для парсера preg_match. Спарсить нужно с сайта Для просмотра ссылки Войди или Зарегистрируйся состояние посылки Для просмотра ссылки Войди или Зарегистрируйся . Вроде ничего сложного но сам не могу сделать
 
Код:
$html= file_get_contents('http://otsledit.com.ua/index.php?co=nova_poshta&nomer_pos=59000149694299');
if(preg_match("/<table width=60%><tr><td align='right' width=50%><strong>.*?<\/strong><\/td><td width=50% align='left'>(.*?)<\/td><\/tr>/", $html, $matches))
{
    echo strip_tags($matches[1]);
}
 
Последнее редактирование:
Спасибо, все работает!! Можете еще помочь сделать проверку(if) есть ли на странице Для просмотра ссылки Войди или Зарегистрируйся текст "Одержувач відмовився від отримання відправлення". Чтоб можно было сменной задать разные значения в отличии есть ли такой текст на странице. Зарание спасибо)
 
preg_match("/(Одержувач відмовився від отримання відправлення)/", $html, $matches);
сделай аналогично условию выше ;)
 
preg_match("/(Одержувач відмовився від отримання відправлення)/", $html, $matches);
сделай аналогично условию выше ;)
сделал вот так:

Код:
            $link = file_get_contents("http://otsledit.com.ua/index.php?co=nova_poshta&nomer_pos=" . $ttn);
               
            if (preg_match("/(Одержувач відмовився від отримання відправлення)/", $link, $matches)) {
    echo "Вхождение найдено.";
} else {
    echo "Вхождение не найдено.";
}

пишет Вхождение не найдено
 
сделал вот так:

Код:
            $link = file_get_contents("http://otsledit.com.ua/index.php?co=nova_poshta&nomer_pos=" . $ttn);
              
            if (preg_match("/(Одержувач відмовився від отримання відправлення)/", $link, $matches)) {
    echo "Вхождение найдено.";
} else {
    echo "Вхождение не найдено.";
}

пишет Вхождение не найдено

думаю дело в том что у тебя скрипт сохранен на винде в кодировке windows-1251 а страница кот. нужно парсить в utf-8
попробуй
Код:
$ttn= 59000146491260;
$html = file_get_contents("https://novaposhta.ua/tracking/?cargo_number=" . $ttn);
$str = iconv('WINDOWS-1251','UTF-8','Одержувач відмовився від отримання відправлення');
if (preg_match("/({$str})/", $html)) {
    echo "Вхождение найдено.";
} else {
    echo "Вхождение не найдено.";
}
 
думаю дело в том что у тебя скрипт сохранен на винде в кодировке windows-1251 а страница кот. нужно парсить в utf-8
попробуй
Код:
$ttn= 59000146491260;
$html = file_get_contents("https://novaposhta.ua/tracking/?cargo_number=" . $ttn);
$str = iconv('WINDOWS-1251','UTF-8','Одержувач відмовився від отримання відправлення');
if (preg_match("/({$str})/", $html)) {
    echo "Вхождение найдено.";
} else {
    echo "Вхождение не найдено.";
}
У меня все равно не работает. Вы проверяли? У Вас работало?
 
да, у меня работает,
кроме кодировки не вижу других вариантов почему не работает

еще проверь есть ли реально эта строка на этой странице которую ты парсишь
 
да, у меня работает,
кроме кодировки не вижу других вариантов почему не работает

еще проверь есть ли реально эта строка на этой странице которую ты парсишь
Результат тот же. Вот как я сделал
Код:
$html = file_get_contents("https://novaposhta.ua/tracking/?cargo_number=59000146491260");
$str = iconv('WINDOWS-1251','UTF-8','відмовився');
if (preg_match('/(' .$str . ')/', $html, $matches)) {
  echo "Вхождение найдено.";
} else {
  echo "Вхождение не найдено.";
}
 
Результат тот же. Вот как я сделал
Код:
$html = file_get_contents("https://novaposhta.ua/tracking/?cargo_number=59000146491260");
$str = iconv('WINDOWS-1251','UTF-8','відмовився');
if (preg_match('/(' .$str . ')/', $html, $matches)) {
    echo "Вхождение найдено.";
} else {
    echo "Вхождение не найдено.";
}
только что проверил, этот код у меня работает и выводит "Вхождение найдено."
возможно у тебя скрипт сохранен в другой кодировке, у меня в данном варианте в windows-1251
если скрипт в utf-8 то преобразование iconv не нужно делать

попробуй еще так
Код:
$html= file_get_contents("https://novaposhta.ua/tracking/?cargo_number=59000146491260");
$str = urldecode('%D0%B2%D1%96%D0%B4%D0%BC%D0%BE%D0%B2%D0%B8%D0%B2%D1%81%D1%8F');
if (preg_match('/(' .$str . ')/', $html, $matches)) {
    echo "Вхождение найдено.";
} else {
    echo "Вхождение не найдено.";
}

может у тебя версия php какая-то очень древняя
хотя тут ничего такого не используется и должно работать на старых
 
Последнее редактирование:
Назад
Сверху