|
|
|
| Здравствуйте!
Сейчас пробую писать скрипт, общий смысл примерно такой:
В форму на сайте вводится url, и скрипт обработав его должен вывести содержимое страницы между тегами <title></title> и содержимое META-тега description, т.е. название и описание введенной страницы.
сейчас готов кусок кода извлекающий название страницы по введенному url:
$fp=fopen("$url",r);
$file=fread($fp,1500);
$lt1=stristr($file,"<title>");
$pt1=substr($lt1,7);
$lt2=strpos($pt1,"</");
$title=substr($pt1,0,$lt2);
echo $title;
|
Никак не получается придумать, точный алгоритм обработки и вывода описания страницы тега description.
Если кто может чего-нибудь посоветовать и помочь, напишите пожалуйста!
Спасибо! | |
|
|
|
|
|
|
|
для: kran
(11.09.2005 в 18:55)
| | Помоему твой код неправильно выведет если между <title></title> будет примерно такое:
...
<title>Символ "</" зачем он нужен?</title>
...
|
| |
|
|
|
|
|
|
|
для: kran
(11.09.2005 в 18:55)
| | Это можно осуществить при помощи скрипта
<?php
$text = file_get_contents($url);
preg_match("#<META[\s]+name[\s]*=[\s]*['\"]?description['\"]?[\s]*content[\s]*=[\s]*['\"]?([^>\"\']+)['\"]?>#iU",
$text, $out);
echo "<pre>";
echo $out[1];
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(11.09.2005 в 22:00)
| | Так, кажется я понял!
Т.е. в данном документе ищем строку по заданному шаблону, a то что находится в шаблоне внутри круглых скобок - это и есть элемент массива с нужными нам данными! КРУТО!
А я еще вот что накопал, и хотелось бы услышать мнение на этот счет, что лучше?
$meta=get_meta_tags($url);
$description=$meta['description'];
|
А с <title> можно тогда также поступить! Правильно?
$text = file_get_contents($url);
preg_match("#<title>([^<\"\']+)</title>#iU",
$text, $out);
echo "<pre>";
echo $out[1];
echo "</pre>";
|
Да, а что значит "U" в конце выражения?
Спасибо! | |
|
|
|
|
|
|
|
для: kran
(12.09.2005 в 00:59)
| | Да, можно и с title также поступить, здесь даже недавно тема была про title.
Модификатор U изменяет "жадность" регулярного выражения - если в обычном режиме регулярное выражение старается найти как можно более длинное соответствие, то с модификатором U - регулярное выражение старается найти как можно более короткое соответствие http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=7118.
Почитать подробнее о модификатарах можно по ссылке http://www.softtime.ru/dic/id_dic=133&id_group=3.
http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=7298 | |
|
|
|
|
|
|
|
для: cheops
(12.09.2005 в 01:14)
| | И еще один вопрос!
В результате работы скрипта при вводе некоторых сайтов, на выходе получается что-то типа:
порно фото и рассказы
или
УЛБЮБФШ РПТОП Ч ЖПТНБФЕ 3gp ДМС ФЕМЕЖПОБ motorola c 650
Как можно решить проблему, чтобы все выводилось в одной кодировке?
Спасибо! | |
|
|
|
|
|
|
|
для: kran
(12.09.2005 в 11:57)
| | Нужно преобразовывать кодировку - первая это UTF-8, вторая KOI8-R. Решать эту проблему следует либо при помощи функций iconv http://www.softtime.ru/group/id_group=11, либо при помощи подручных средств http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3425 и функции convert_cyr_string() http://www.softtime.ru/dic/id_dic=16&id_group=1 | |
|
|
|
|
|
|
|
для: cheops
(12.09.2005 в 13:19)
| | Все прочитал, вроде понятно, но что-то не получается!
А можно разобрать на конкретном примере?
Предположим вводится некий url, скрипт идет по нему и извлекает из этой страницы два значения - название страницы и ее описание, далее определяется текущая кодировка полученных данных. Если кодировка не соответствует windows-1251, то выполняется конвертирование, иначе все нормально и скрипт работает дальше.
Данные для примера:
$utf="продажа машины в кредит";
$koi="УНЕЫОЩЕ Й ЧЕУЕМЩЕ РПЪДТБЧМЕОЙ";
Спасибо! | |
|
|
|
|
|
|
|
для: kran
(12.09.2005 в 20:27)
| | Для KOI8-R всё просто
<?php
$koi = "УНЕЫОЩЕ Й ЧЕУЕМЩЕ РПЪДТБЧМЕОЙ";
echo convert_cyr_string($koi,'k','w');
?>
|
Для UTF-8 уже не получится преобразовать так как бинарные данные побиты кодировкой cp1251 на форуме - нужно текст прямо из источника брать.
PS Определить какая кодировка без указания (например в META-тэге) нельзя - тут только на глазок и запоминать где в какой кодировке данные представлены. | |
|
|
|
|
|
|
|
для: cheops
(13.09.2005 в 01:37)
| | Т.е. как я понял определить кодировку части текста нельзя, и единственным условием, которое здесь можно применить - это запрашивать кодировку всего документа из мета-тега charset. И уже на основании полученного значения применять конвертацию в нужном направлении.
Я правильно понял? | |
|
|
|
|
|
|
|
для: kran
(13.09.2005 в 11:18)
| | да. | |
|
|
|