|
|
|
| Добый день, есть у меня такая строка, необходимо вытащить только хост, тоесть thumbs.begun.ru
<?php
$string = "Host: thumbs.begun.ru\r\n";
?>
|
| |
|
|
|
|
|
|
|
для: Night_Charter
(26.03.2007 в 18:38)
| | В чем проблема? Отрезаем просто начало строки, да и все.
preg_replace("/^Host: /", "", $str);
preg_replace("/[\r\s]*$/", "", $str);
|
| |
|
|
|
|
|
|
|
для: SHAman
(26.03.2007 в 18:42)
| | Вот выкладываю скрипт и прицепляю кусок лога.
<?php
// Файл с логами
$handle = file("exmp.log");
// Берем для обработки первую строку, я потом все сделаю циклом
$hand = $handle[0];
// Выдергиваем дату
$pattern = "/\@(.+)\+/smU";
$addr = "-";
if(preg_match($pattern, $hand, $date)) {
$date = $date[0];
$date = str_replace("@", "", $date);
$date = str_replace("+", "", $date);
echo "Дата: $date<br>";
}
// Выдергиваем исходный IP
$pattern = "/(.+)\-/smU";
$ip = "-";
if(preg_match($pattern, $hand, $ip)) {
$ip = $ip[0];
$ip = str_replace("-", "", $ip);
echo "Исходный ip: $ip<br>";
}
// Выдергиваем целевой IP
$pattern = "/\>(.+)\@/smU";
$ip2 = "-";
if(preg_match($pattern, $hand, $ip2)) {
$ip2 = $ip2[0];
$ip2 = str_replace("@", "", $ip2);
$ip2 = str_replace(">", "", $ip2);
echo "Целевой ip: $ip2<br>";
}
// Выдергиваем имя хоста
$pattern = "/\Host: (.+)\Connection/smU";
$host = "-";
if(preg_match($pattern, $hand, $host)) {
$host = $host[0];
$host = str_replace("Host: ", "", $host);
$host = str_replace("Connection", "", $host);
$host = str_replace("\r\n", "", $host);
echo "Имя хоста: $host <br>";
}
// Выдергиваем размер файла
$pattern = "/\, size (.+)/";
$filesize = "-";
if(preg_match($pattern, $hand, $filesize)) {
$filesize = $filesize[0];
$filesize = str_replace(", size ", "", $filesize);
echo "Размер файла: $filesize<br>";
}
?>
|
Все работает, единственная проблема в том, что я не могу убрать "\r\n" из переменной $host. | |
|
|
|
|
|
|
|
для: Night_Charter
(26.03.2007 в 21:03)
| | Почему эти \r\n не удаляются простым str_replace-ом?!
<?php
$host = str_replace("\r\n", "", $host);
?>
|
В чем проблема? | |
|
|
|
|
|
|
|
для: Night_Charter
(26.03.2007 в 22:07)
| | Я использую trim | |
|
|
|
|
|
|
|
для: Владимир55
(27.03.2007 в 01:07)
| | Не работает ни trim, ни rtrim, ни strstr, ни str_replace и etc...
Я думаю, что проблема в "\" обратном слешэ.
Нам нужна помощь cheopsa, срочно. | |
|
|
|
|
|
|
|
для: Night_Charter
(26.03.2007 в 21:03)
| | Объясните, ради любопытства, что значит эта строка?
$pattern = "/\Host: (.+)\Connection/smU";
|
| |
|
|
|
|
|
|
|
для: Trianon
(27.03.2007 в 10:07)
| | Я не хавец в регэспах, но в данном случае я выдираю имя хоста в тексте "Host: ad3.bannerbank.ru\r\nConnection".
Нужный хост - ad3.bannerbank.ru\r\n, эти долбанные \r\n не удаляются... | |
|
|
|
|
|
|
|
для: Night_Charter
(27.03.2007 в 10:20)
| | Поступил следующим образом:
<?php
$host = stripslashes($host);
$host = rtrim($host, "rn");
?>
|
| |
|
|
|
|
|
|
|
для: Night_Charter
(27.03.2007 в 10:20)
| | Строки Host и Connection именно в таком порядке Вам никто не гарантировал.
Почему не выдирать как-то так '/Host:[\s]*([-a-z0-9\.]+)[\s]/i' ? | |
|
|
|
|
|
|
|
для: Trianon
(27.03.2007 в 10:37)
| | Trianon
Ваш паттерн "/Host:[\s]*([-a-z0-9\.]+)[\s]/i" не работает! | |
|
|
|
|
|
|
|
для: Night_Charter
(28.03.2007 в 15:22)
| | Надо вырезать имя хоста после слова "Host:" до первых "\r\n".
Как реализовать? | |
|
|
|
|
|
|
|
для: Night_Charter
(28.03.2007 в 15:22)
| | Мой, как Вы выразились, паттерн, работает замечательно.
Когда писал - не проверял, но сейчас специально протестировал. Ни одного символа исправлять не пришлось. | |
|
|
|
|
|
|
|
для: Trianon
(28.03.2007 в 15:47)
| | Что-то все больше стал убеждаюсь в корявости своих рук, покажите как Вы осуществляете проверку. | |
|
|
|
|
|
|
|
для: Night_Charter
(28.03.2007 в 15:54)
| | Пожалуйста :)
<?php
$pattern = '/Host:[\s]*([-a-z0-9\.]+)[\s]/i' ;
$x ='GET http: //top100-images.rambler.ru/top100/banner-88x31-rambler-gray2.gif HTTP/1.0
Accept: */*
Referer: http://softtime.ru/forum/read.php?id_forum=6&id_theme=34987
Accept-Language: ru
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MRA 4.8 (build 01709); .NET CLR 1.1.4322)
Host: top100-images.rambler.ru
Cookie: ruid=AQAAAOpI7UScFgAAAeN3EQB=
';
preg_match($pattern, $x, $res);
echo $res[1];
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(28.03.2007 в 16:50)
| | Спасибо, Trianon.
У меня заработало когда убрал последний пробел в паттерне..
Последнее, что меня интерисует - правильно выдрать Referer.
Заранее благодарен ) | |
|
|
|
|
|
|
|
для: Night_Charter
(28.03.2007 в 21:36)
| | Сам разобрался, использовал
<?php
$pattern = '/Referer:[\s]*(http:\/\/[-a-z0-9\.]+)/i';
?>
|
Всем спасибо за помощь ) | |
|
|
|