Добрых Дел Мастер
С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227
|
Добавлено: 10/04/11 в 14:27 |
снова к теме парсеров .
Цитата: |
$a='
<html>
<head>
<meta charset="UTF-8" />
<meta charset="UTF-16" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-32" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-64" />
</head>
<body>
<div class="title"> тратата </div>
</body>
</html>';
$html = phpQuery::newDocument($a);
echo $html->html(); # покажем всю строку
echo $html->find('div.title'); # найдем див
|
вывод:
Цитата: |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-32"></head></html>
PHP Notice: Trying to get property of non-object in phpQuery-onefile.php on line 679
PHP Fatal error: Call to undefined method stdClass::markup() in phpQuery-onefile.php on line 681
|
т.е. ничего не находит. внутри вместо строки какое-то дерьмо. без body даже.
Цитата: |
$a='
<html>
<head>
</head>
<body>
<div class="title"> тратата </div>
</body>
</html>';
$html = phpQuery::newDocument($a);
echo $html->html();
echo $html->find('div.title');
|
вывод:
Цитата: |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"></head>
<body>
<div class="title"> тратата </div>
</body>
</html>
<div class="title"> тратата </div>
|
div.title находит, внутри то что нужно.
Как этой либой невалидный хтмл то парсить? в общем случае внутри строки может быть любая хуйня. хтмлдомпарсер прекрасно справляется. как эту заставить? чтобы просто загрузила внутрь себя строку, без изменений, потом далее я что-то попарсил нужное. и точка.
|
|
пришел к победе коммунистического труда
|
0
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 10/04/11 в 16:30 |
|
|
|
|
С нами с 18.08.04
Сообщения: 6376
Рейтинг: 4430
|
Добавлено: 10/04/11 в 16:44 |
|
|
|
|
С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506
|
Добавлено: 10/04/11 в 17:47 |
я от него отказался, он тупо подвисал на некоторых страницах yahoo.
phpquery пока что зе бест.
http://habrahabr.ru/blogs/php/114323/
вот кстати неплохой пост о пхп парсерах. хотя главная проблема именно в фатальных багах, согласен.
|
|
|
|
Добрых Дел Мастер
С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227
|
Добавлено: 13/04/11 в 15:26 |
Кто тьюди юзает поделитесь общественно-полезными настройками. Наковырял вроде самые значимые:
Цитата: |
doctype: transitional - установка доктайпа (omit - без доктайпа, auto - поставит доктайп на основе анализа документа)
tidy-mark: no - не добавлять спец.тег как флаг обработанного tidy файла
quiet: no - не показывать кол-во ошибок
write-back: yes - писать вывод в этот же файл
force-output: yes - принудительный вывод, даже отработанного с ошибками текста
output-encoding: utf8 - кодировка вывода
input-encoding: utf8 - кодировка ввода
show-errors: 0 - не показывать ошибки
show-warnings: no - не показывать предупреждения
wrap: 0 - правый маргин для текста
drop-proprietary-attributes: yes - удалит проприетарные MS аттрибуты
bare: yes - удаляет теги Microsoft HTML Word 2000, преобразует неразрывные пробелы в простые пробелы
clean: yes - удаляет презентационные Microsoft теги и аттрибуты заменяя их стилевыми правилами и хтмл-разметкой
word-2000: yes - вырезать Microsoft Word 2000 теги
escape-cdata: yes - преобразует секции <![CDATA[]]> в нормальный текст
hide-comments: yes - удаление комментов
merge-divs: no - не сливать вложенные дивы
merge-spans: no - не сливать вложенные спаны
|
не определился только с этим http://tidy.sourceforge.net/docs/quickref.html#numeric-entities
и с тем надо ли (output-html: yes - вывод как хтмл-документ) писать
2. в пхпквери на строке 517 вроде как ошибка. текст ошибки "PHP Notice: Undefined variable: hltml in /home/user/phpQuery-onefile.php on line 517"
|
|
пришел к победе коммунистического труда
|
0
|
|
|
С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506
|
Добавлено: 13/04/11 в 16:51 |
я вот так запускал, щас уже толком не помню опций
Код: | /usr/lib/tidy -utf8 -wrap 0 -f %ERRORFILE% %FILENAME% |
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |