Обработка ссылок

 
+
-
edit
 

Balancer

администратор
★★★★★

Модуль, отвечающий за замену простых ссылок на заголовки страниц, на которые они ведут.

Особенности
- Поддерживаются одноуровневые редиректы
- Поддерживаются перекодировки из кодировок тех страниц, на которые они ведут.
- Корректно выделяются ссылки, оканчивающиеся на точку, запятую или иной знак препинания, заключённые в скобки.
- Если заголовок вытащить не удалось, текстом ссылки остаётся сама же ссылка. То же самое - для FTP-ссылок.
- Длинные ссылки без заголовка урезаются до 80 символов.
- Длина заголовка обрезается по границе 256 символов.
- Целевая кодировка модуля - UTF-8.

Требования
- Установленный в системе модуль HTTP_Request из PEAR (PEAR - PHP Extension and Application Repository)
 
Это сообщение редактировалось 06.06.2004 в 11:31
+
-
edit
 

Balancer

администратор
★★★★★

Пример работы:

www.ru превращается в
 


http://linux.org.ru превращается в

LINUX.ORG.RU - Русская информация об ОС Linux

Все о Linux на русском языке

// linux.org.ru
 

 
 
+
-
edit
 

Balancer

администратор
★★★★★

Текущий вариант кода
Прикреплённые файлы:
 
 
Это сообщение редактировалось 03.07.2004 в 16:03
RU -=Илья=- #08.06.2004 07:38
+
-
edit
 
Zip-папка пимеет неправильный формат, или повреждена.
 
+
-
edit
 

Balancer

администратор
★★★★★

-=Илья=-, 08.06.2004 07:38:50 :
Zip-папка пимеет неправильный формат, или повреждена.
 


Кажется, старый глюк с "gzip-кодировкой" ZIP'а :-/
Разбираться пока в лом, сейчас приаттачу изменённую версию непакованную.

Исправлена обработка ссылок, с вплотную стоящими после них тэгами, например
code html4strict
  1. <li> http://www.ru/<li>


Раньше ссылкой считалась вся строка до конца, включая тэг. Сейчас такие случаи просто игнорируются.
 
Это сообщение редактировалось 03.07.2004 в 16:04
+
-
edit
 

Balancer

администратор
★★★★★

Исправление: теперь, если сервер не возвращает кодировку, считается, что она - Windows-1251
 
Это сообщение редактировалось 03.07.2004 в 16:04
+
-
edit
 

Balancer

администратор
★★★★★

Исправлен глюк - в PHP не работает конструкция вида $var |= 'string';
 
Это сообщение редактировалось 03.07.2004 в 16:04
+
-
edit
 

Balancer

администратор
★★★★★

Внимание, ошибка в HTTP/Request!

В строке 962 файла HTTP/Request.php записано:
code php
  1. $this->_body = gzinflate(substr($this->_body, 10));


Во-первых, при перезагрузке mb_substr, substr отрезает уже не 10 байт, а 10 символов. Во-вторых, в этих 10 символах может встретится \x00 и тогда строка вообще пустая возвращается.

Залатать можно так:
code php
  1. $this->_body = gzinflate(preg_replace("!^.{10}!","",$this->_body));

Т.е. удаляем первые 10 символов p-regexp'ом.

Пример ссылки, на которой обламывается вариант с substr() - Object not found!

Под Win - всё ок. Ошибка возникает в Linux RH 7.3
 
+
-
edit
 

Balancer

администратор
★★★★★

-=Илья=-, 08.06.2004 07:38:50 :
Zip-папка пимеет неправильный формат, или повреждена.
 


Исправлено
 
+
-
edit
 

Balancer

администратор
★★★★★

исправление:

28.06.04 0.4 исправления выделения ссылок, заканчивающихся [, |, ] и т.п.
 
RU slipstream #02.09.2004 08:47
+
-
edit
 

slipstream

втянувшийся
// багрепорт

Автовытягивание заголовка сбивается на ссылках вложенных в текст тага url:

[url=http://www.npj.ru/]Текст к ссылке на http://www.npj.ru/ Всё ещё текст[/url]


Текст к ссылке на http://www.npj.ru/ Всё ещё текст

PS: Опля, и ещё и внутри тага code зачем-то стало срабатывать :-/
Это сообщение редактировалось 02.09.2004 в 09:07
+
-
edit
 
+
-
edit
 

Balancer

администратор
★★★★★

Не-а, не понял, где тут ошибка :)

Хотя, безусловно, при ошибках HTML на странице, вытягивание автоссылок может глючить. Тогда ссылки уже и вручную прописать можно. [http://www.npj.ru/|http://www.npj.ru/] - http://www.npj.ru/
 
RU slipstream #06.09.2004 09:38
+
-
edit
 

slipstream

втянувшийся
Ну вот, у меня ещё и уведомления к этой теме не пришли :)
Тест
[http://www.npj.ru/|http://www.npj.ru/]
RU slipstream #06.09.2004 09:52
+
-
edit
 

slipstream

втянувшийся
Хм, скорее тогда три ошибки, или два пожелания и одна ошибка:

1) Неудобно, когда внутри bb-тага "code" срабатывают bb-коды и автозамена ссылок на их заголовок :-/

2) Неудобно, когда внутри bb-тага "url" срабатывает автозамена ссылок на их заголовок.

3) Сейчас для bb-тага "url" точно есть одна ошибка — текст, идущий после заменяемой ссылки, становится обычным текстом. Вот тут тот пример, что у меня выше не получилось процитировать :)

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru