|
|
|
| Здравствуйте...
У меня такая проблема.....
Вообщем делаю парсер..
Вот такой:
<html>
<head><title>Parser</title></head>
<body>
<form method="POST">
Location of the file: <input type="text" name="url" value="" style="width: 120;height:20;" /><br/></br>
Before: <input type="text" name="before" value="" style="width: 60;height:20;" /><br/></br>
After: <input type="text" name="after" value="" style="width: 60;height:20;" /><br/></br>
<input type="submit" name="end" value="Parse..."/>
</form>
<?php
set_time_limit(0);
$url = isset($_POST['url']) ? $_POST['url'] : '';
$before = isset($_POST['before']) ? $_POST['before'] : '';
$after = isset($_POST['after']) ? $_POST['after'] : '';
$end = isset($_POST['end']) ? $_POST['end'] : '';
if($end)
{
if($url && $before && $after)
{
$ps = file_get_contents($url);
$bef = explode($before, $ps);
$srh = $bef[1];
$search = explode($after, $srh);
foreach($search as $nm)
{
echo $nm."<br>";
}
}
else
{
echo "Заполните все поля";
}
}
?>
</body>
</html>
|
Вообщем парсер такой...
Выбирается файл, пишеться начальное значение и конечное...
И надо вывести все, что находится между начальным и конечным значением..
Но он выводит только первое, а надо чтобы вывел все...
Вот не знаю в чем проблема...
Допустим выбираем файл - http://www.mail.ru
Начальное значение <META , конечное - content
Так вот он должен вывести все что находится между <META и content
NAME="DESCRIPTION"
name="Keywords"
http-equiv="content-type"
А в моем примере он выводит только первое значение :(
И еще.....как сделать чтобы мы выбирали локлаьный файл...я не могу додумать... | |
|
|
|
|
|
|
|
для: SnooPI
(03.07.2007 в 15:06)
| | Очень надо.. | |
|
|
|
|
|
|
|
для: SnooPI
(03.07.2007 в 15:59)
| | Поидее Вам в форум по рег. выражениям! | |
|
|
|
|
|
|
|
для: Proger
(03.07.2007 в 16:16)
| | Ответили бы уже здесь :( | |
|
|
|
|
|
|
|
для: SnooPI
(03.07.2007 в 18:17)
| | Помогите мне пожалуйста....
Вопрос ведь не такой сложный | |
|
|
|
|
|
|
|
для: SnooPI
(03.07.2007 в 15:06)
| | Не получится... слишком неоднозначное условие
<?php
// Начальная строка
$before = "<META";
// Конечная строка
$after = "content";
// Содержимое файла
$ps = file_get_contents("mail.ru.html");
// Регулярное выражение
$pattern = "|".preg_quote($before)."(.*?)".preg_quote($after)."|is";
// Находим все соотвествия
preg_match_all($pattern, $ps, $out);
echo "<pre>";
print_r($out[1]);
echo "</pre>";
?>
|
У вас content входит в состав последней строки, поэтому получить вы можете только что-то вроде
Array
(
[0] => NAME="DESCRIPTION"
[1] => name="Keywords"
[2] => http-equiv="
)
|
| |
|
|
|
|
|
|
|
для: cheops
(04.07.2007 в 09:03)
| | Спасибо большое, работает...
А не могли бы вы еще подсказать...
Как сделать чтобы выбирать не веб-файл(досутпный из веб) , а допустим наш скрипт находится на хостинге в папке /home/usr1/www/parser.php, а файл который нужно пропарсить находится в папке /home/usr1/php.php
Так вот файл php.php не доступен ведь через web, а я не знаю как сделать чтобы его пропарсить.... | |
|
|
|
|
|
|
|
для: SnooPI
(04.07.2007 в 14:22)
| | Если хватит прав досутпа, пропишите путь такой, как он есть.
<?php
include "/home/usr1/php.php";
// или
$file = fopen("/home/usr1/php.php","r");
if(!file)
{
echo("Ошибка открытия файла");
}
?>
|
| |
|
|
|
|
|
|
|
для: Night_Charter
(04.07.2007 в 17:44)
| | Как тогда через fopen парсить? | |
|
|
|
|
|
|
|
для: cheops
(04.07.2007 в 09:03)
| | cheops, проблемка....
Файл, размером 40мб не обрабатывает.... | |
|
|
|
|
|
|
|
для: SnooPI
(05.07.2007 в 12:38)
| | Он просто в память не убирается, которая отводится скрипту... конкретизируйте задачу (чтобы можно было ловчее это ограничение обойти) - вам для каких целей такой скрипт потребовался (просто очень редко встречаются HTML страницы в 40Мб, поэтому я без задней мысли использовал file_get_contents(), который читает всё содержимое файла в оперативную память)? | |
|
|
|
|
|
|
|
для: cheops
(05.07.2007 в 14:06)
| | Ну я сайт привел в пример....А так обрабатывать надо файлы .txt больших размеров :( | |
|
|
|
|
|
|
|
для: SnooPI
(06.07.2007 в 02:32)
| | Цель обработки какая - т.е. что вы в качестве результата получаете? | |
|
|
|