Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
asterix_kpi

Вставка url в ответ

Recommended Posts

У меня стоит строка:

У топик стартера локализация от IBR или что-то еще не то?

На сколько я вижу идентично, за исключением метасимвола \w который заменен на юникод \p{L}. ИБР-овцы видимо забыли, что в \p{L} числовой класс (0-9) не входит как в случае с \w. За то последний не будет работать с урл-ами в которых есть кириллица в utf-8 с не правильно установленной локалью. Можно заменить \p{L} на \w, можно после добавить 0-9, это не столь важно, все равно несовместимость несколько ссылок в одной строке остается. Попробуйте разместить две-три ссылки в одной строке без перевода строк, и несколько ссылок каждая с новой строки.

  • Upvote 1

Share this post


Link to post
Share on other sites

Попробуйте разместить две-три ссылки в одной строке без перевода строк, и несколько ссылок каждая с новой строки.

 

Несколько ссылок в одной строке не проходят. Отображается только одна. А вот несколько ссылок, каждая с новой строки, добавляется нормально.

 

TQkJH.jpg

 

При всех минусах, ставить стороннюю локализацию от IBR и лишать себя оперативного апгрейда в случаях устранения критических уязвимостей считаю излишним.

Share this post


Link to post
Share on other sites

Хотя, можно вставить несколько ссылок в одной строке, используя кнопку ББ-кода RTE:

 

1XvgQ.jpg

 

Так что, проблемы скорее у IBR, чем у IPS.

Share this post


Link to post
Share on other sites

За то последний не будет правильно работать с урл-ами в которых есть кириллица в utf-8 и не правильно установленной локалью в скриптах.

 

Насколько я понял из объяснений техподдержки, IPS склоняется к кодировке utf8 по умолчанию для своих продуктов в новых версиях. Типа: меняйте кодировку у себя, нам надоели ваши кракозябры в 20% случаев обращения в нашу техподдержку.

Share this post


Link to post
Share on other sites

Ну с ббкодом понятно что работать будет. ИБР лопухнулись с тем, что перейдя на юникод забыли добавить поддержку числам (ссылка ТСа от того и парсилась не полностью). Логику ИПС построили хреновую, перейдя на preg_match_all не возможно составить вменяемое регулярное выражение чтобы оно соответствовало нужному формату. Если откатится на оригинальный код библиотеки, сохранив регулярку от ИПС (или ибр для юникода), все ссылки замечательно парсятся так, как нужно. Можете кстати спросить у них об этом, что за wtf.

Share this post


Link to post
Share on other sites

Чтобы создавать запрос в поддержку, у меня что-то не должно работать. Пока не пойму, что же у меня не работает из вашего объяснения? :)

 

Так или иначе, все текстовые редакторы имеют ряд ограничений. Я свято верю, что в IPS пошли по этому пути по причине каких-то серьезных целей, например, безопасности или совместимости...

 

Хотя, спросить могу. Напишите, что спросить?

Edited by Zero108

Share this post


Link to post
Share on other sites

Просто спросите почему не оставили оригинальную логику библиотеки htmlpurifier из файла ips_kernel\htmlpurifier\HTMLPurifier\Injector\Linkify.php где использовался preg_split, а поменяли на preg_match_all и теперь не захватываются все ссылки которые находятся в одной строке.

Я тоже верю, что какая-то причина все же была.

  • Upvote 2

Share this post


Link to post
Share on other sites

Пока всё, что удалось узнать в личке:

 

XFU8W.jpg

 

Сейчас попробую изменённый linkify.php.

Share this post


Link to post
Share on other sites

C изменённым Linkify.php ссылки в одной строке вставляются так:

 

SnMDi.jpg

 

Почти работает :)

 

Да, и чуть не забыл:

 

preg_match_all( "#(.*?)(\()?((?:http|ftp|https):\/\/[\w\-_]+(?:\.[\w\-_]+)?(?:[\w\-\.,\(\)@?^=%&:/~\+\#]*[\w\-\@?^=%&/~\+\#]))(.*?)$#ims", 

 

Поражает обилие неудалённого закомментированного кода в Linkify.php. Видимо, работа кипит, все течёт, всё меняется. IBR точно не угнаться за апдейтами. Так что, дружно пересаживаемся на IPS.

Share this post


Link to post
Share on other sites

Я откатился, и у меня вставляются так

 

aMivp.png

Share this post


Link to post
Share on other sites

Меня ссылки в одной строке особо не беспокоят. Но, я подал запрос в техподдержку.

 

Интересно, в вашей версии, если вставить в LTE редакторе и сохранить в нем следующий код, два переноса строки после /center сохраняются или нет (без переключений на RTE)?

 


[center][img=http://ipbskins.ru/forum/uploads/av-32329.jpg][/center]


текст

 

У меня раньше второй перенос пропадал. Сейчас стало нормально сохраняться даже без предварительного переключения на RTE перед сохранением.

Share this post


Link to post
Share on other sites

Я свято верю, что в IPS пошли по этому пути по причине каких-то серьезных целей, например, безопасности или совместимости...

Конечно же ради безопасности и совместимости IPS берут

$token = array(); обнуляют объект

           foreach( $matches[0] as $k => $match )
           {
               if( !$matches[3][$k] )
               {
                   $token[]   = new HTMLPurifier_Token_Text($token->data); и тут же к нему обращаются

Регулярка у ИБР давно выглядит вот так

preg_match_all( "#(.*?)(\()?((?:http|ftp|https):\/\/[\p{L}\d\-_]+(?:\.[\p{L}\d\-_]+)?(?:[_\p{L}\d\-\.,\(\(@?^=%&:\/~\+\#]*[\p{L}\d\-_\@?^=%&\/~\+\#]))(.*?)$#ims"

Это в моем дистрибе, который я скачал порядка месяца назад. Цифирьки учтены и ссылка ТСа парсится и на моем форуме и на ИБРовском.

 

Еще вот в последнем(?) патче от IPS регулярка выглядит как

#(.*?)(\()?((?:http|ftp|https):\/\/[\w\-_]+(?:\.[\w\-_]+)?(?:[\w\-\.,\(\)@?^=%&:/~\+\#]*[\w\-\@?^=%&/~\+\#]))(.*?)$#ims

Конечно, & подпадает под

preg_match("#[&]#ims", '&')

хоть и вместе с 'a','m','p' и ';', но как-то некрасиво.

 

Так что я никуда с IBR уходить не собираюсь, тем более, что у меня хостинг в \w русские буквы не включает и пересобирать php не дает.

Share this post


Link to post
Share on other sites

Ну, можете порадоваться:

 

1. It was too loose and would pick up things which (although are valid URLs) are not what you might intend - for example "http://www.google.com (Google)" would link the "Google" bit. In 4.0 we've turned off that option in HTMLPurifier and using our own solution which is much more reliable.

 

http://community.invisionpower.com/topic/391283-why-was-the-default-htmlpurifier-library-changed/?p=2423164

 

Скоро ваш IBR не сможет вот так просто взять и поправить парсер, потому что это уже будет не бесплатная библиотека, а код с копирайтом IPS.

 

Так что вы там хотели сказать о преимуществах использования принципа баги IPS + баги от IBR? Ну, по сравнению с принципом: заплатил IPS и тебе все быстро делают в течение суток-двое?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...