Почему не получается с preg_match?

216
15 апреля 2017, 00:14

пытаюсь спарсить с сайтов партнеров информацию о том, в наличии ли у них товар или нет. Собственно вот код

$ch = curl_init(); 
    curl_setopt($ch,CURLOPT_URL,'http://xn----7sblaeg7cgj4a.com.ua/snyato-s-prodazh-za-mart-2017/3339-palto-frak.html');
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36');
    $out = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if (preg_match("/продан/ui", $out)) {
      var_dump('yes');
    }else{
      var_dump('no');
    }

но получаю ответом

/var/www/html/curl/index.php:28:string 'no' (length=2)

хотя на сайте сеть следующие строки

<meta name="description" content="ПРОДАНО" />
...
<div id="short_description_content" class="rte align_justify"><p style="text-align: center;"><span style="font-size: 14pt;"><strong>ПРОДАНО</strong></span></p></div>

причем var_dump($out); выдает страницу полностью

Answer 1

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

if (mb_stristr($out, 'продан')) {
    var_dump('yes');
} else {
    var_dump('no');
}

Эта функция ищет подстроку "продан" в мультибайтовой кодировке без учёта регистра и работает быстрее, чем поиск по регулярному выражению. Если вам нужен поиск с учётом регистра, используйте функцию mb_strstr($out, 'продан')

Если вам нужно использовать именно регулярные выражения, то уберите модификатор u, так как он разбивает строку в юникод и, как результат, не находит указанного слова.

Таким образом, проверка условия должна выглядеть следующим образом:

if (preg_match('/продан/i', $out)) {
    var_dump('yes');
} else {
    var_dump('no');
}
READ ALSO
Как получить подключение к БД в codeignther

Как получить подключение к БД в codeignther

Всем приветЕсли использовать

177
Twig множество параметров

Twig множество параметров

Господа вопрос по Twig

234
htaccess ошибка перенаправления?

htaccess ошибка перенаправления?

Работаю над проектом с 2-х машинНа одной, при запуске сайта на локальном сервере по ссылке http://root/ открывается рабочий проект

238