Регулярное выражения на php

M9
На сайте с 15.05.2014
Offline
79
832

Как парсит из такого текста:

HTTP/1.1 301 Moved Permanently

Server: nginx/1.0.15
Date: Sat, 13 Aug 2016 16:23:57 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.3.3
Set-Cookie: PHPSESSID=caf91bbk41qqgip9239vqgqu55; path=/; domain=.topvideo.tj; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: dle_user_id=deleted; expires=Fri, 14-Aug-2015 16:23:56 GMT; path=/; domain=.topvideo.tj; httponly
Set-Cookie: dle_password=deleted; expires=Fri, 14-Aug-2015 16:23:56 GMT; path=/; domain=.topvideo.tj; httponly
Set-Cookie: dle_hash=deleted; expires=Fri, 14-Aug-2015 16:23:56 GMT; path=/; domain=.topvideo.tj; httponly
Location: http://topvideo.tj/sport/511180.html
Redirect

ссылку после Location

Bond_007
На сайте с 11.10.2010
Offline
62
#1

preg_match("/Location (.*\n)/U", $str, $matches);

Как-то так

LinkBoss.net - Трастовые ссылки для увеличения трафика в 10 раз! (http://linkboss.net/)
Skom
На сайте с 02.12.2006
Offline
166
#2

Наверное, всё таки вот так

\nLocation: (.*)\n

:)

Cras amet qui numquam amavit quique amavit cras amet
M9
На сайте с 15.05.2014
Offline
79
#3

я что то не понимаю что тут я делаю не так?


$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); //Устанавливаем параметр, чтобы curl возвращал данные, вместо того, чтобы выводить их в браузер.
curl_setopt($ch, CURLOPT_URL, 'http://topvideo.tj/serials/511180.html');
$data = curl_exec($ch);
curl_close($ch);
preg_match("/Location (.*\n)/U", $data, $matches);
print_r($matches);



---------- Добавлено 13.08.2016 в 21:21 ----------

тему можно закрыт нашел функцию для парсинга редиректа:


// тестируем URL
$urls = array(
"http://topvideo.tj/serials/511180.html",
);
foreach ($urls as $url) {
//echo "URL: $url\n";
$ch = curl_init();
// указываем url
curl_setopt($ch, CURLOPT_URL, $url);
// нам не нужно содержание страницы
curl_setopt($ch, CURLOPT_NOBODY, 1);

// нам необходимо получить HTTP заголовки
curl_setopt($ch, CURLOPT_HEADER, 1);

// возвращаем результаты вместо вывода
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
// был ли HTTP редирект?
if (preg_match("!Location: (.*)!", $output, $matches)) {
return $matches[1];
}else{
return $url;
}
}
L
На сайте с 10.02.2015
Offline
221
#4

Если потом по этому редиректу нужно перейти, то можно сказать, чтобы это делал сам curl:


curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 4);
M9
На сайте с 15.05.2014
Offline
79
#5
livetv:
Если потом по этому редиректу нужно перейти, то можно сказать, чтобы это делал сам curl:


curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 4);

Спасибо. Парсинг у меня идет через simple html dom =)

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#6
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

Аха, это на локалке будет работать. А вот на серверах такое не разрешено. Там надо костыль делать.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
L
На сайте с 10.02.2015
Offline
221
#7
LEOnidUKG:
Аха, это на локалке будет работать. А вот на серверах такое не разрешено. Там надо костыль делать.

Сервер серверу рознь :)

У меня на шареде такое работало.

tommy-gung
На сайте с 22.11.2006
Offline
287
#8
Здесь не могла быть ваша реклама

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий