регулярные выражения. вопрос

Discussion in 'PHP' started by DRON-ANARCHY, 30 Apr 2007.

Thread Status:
Not open for further replies.
  1. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    вопрос:
    PHP:
    $mess=preg_replace("!(https?|ftp)://(.*?)([\s<'\"]){1,}!ise""'<a href=\"\\1://\\2\" target=\"_blank\">\\1://\\2</a>\\3'"$mess);
    я не до конца раскурил эти штуки... но все-таки...
    Мне надо бы сделать так, чтобы оно жрало ссылки вида
    www.site.ru
    site.ru
    www.ste.ru?parametr=zna4enie

    а то в таком виде кушает только вместе в протоколом и без параметров
     
  2. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    http://regexlib.com/Search.aspx?k=link
    посмотри )
     
  3. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    Спасиба. Я весь гугл обшарил, а эту штуку не находил)
     
  4. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    Не блин... хрень какая-то... там все служебные символы закручены через кодировки и я хрен славливаюсь...
     
  5. mamamot

    mamamot Elder - Старейшина

    Joined:
    20 Feb 2007
    Messages:
    8
    Likes Received:
    1
    Reputations:
    0
    PHP:
    $regex="#^(http://|https://|ftp://)?[-a-z0-9_\.]+([-a-z0-9_]+\.(html|php|cgi|pl|phtml))?([-a-z0-9_:@&\?=+,\.!/~*'%$]+)?$#i";
    Вот так вот, должно работать:)
     
  6. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    А это тебе для чего? Если тебе этим в чате или в форуме фильтровать, то под него попадут все любители не ставить пробел после точки, как тут "Привет.Как дела" - <a href="//Привет.Как/"...
    Code:
    [color=#00AA00]$mess[color=#0000FF]=[/COLOR][color=#00FF00]preg_replace[/COLOR][color=#0000FF]([/COLOR][/COLOR][color=#FFFF00]'[color=#FF0000]![/COLOR][color=#00FF00]([/COLOR]https?:[color=#00FF00]|[/COLOR]ftp:[color=#00FF00]|)[/COLOR][color=#00FF00]([/COLOR]//[color=#00FF00]|)[/COLOR][color=#00FF00]([[/COLOR][color=#FFFFFF]\w[/COLOR][color=#00FF00]]+[/COLOR]\[color=#00FF00].[/COLOR][color=#FFFFFF]\w[/COLOR][color=#00FF00][[/COLOR][color=#FFFFFF]\w[/COLOR][color=#00FF00].][/COLOR][color=#00FF00]+)[/COLOR]/?[color=#00FF00]([[/COLOR]^[color=#FFFFFF]\<\>[/COLOR][color=#FFFFFF]\"\n[/COLOR][color=#FFFFFF]\r\\[/COLOR]\\?[color=#00FF00]]*[/COLOR][color=#00FF00]|)[/COLOR][color=#00FF00]([/COLOR][color=#FFFFFF]\?[/COLOR][color=#00FF00][[/COLOR]^[color=#FFFFFF]\<\>[/COLOR][color=#FFFFFF]\"\n[/COLOR][color=#FFFFFF]\r\\[/COLOR]\\[color=#00FF00]]*[/COLOR][color=#00FF00]|)[/COLOR][color=#FF0000]!i[/COLOR]'[/COLOR][color=#00AA00][color=#0000FF],[/COLOR] [/COLOR][color=#FFFF00]'<a href="\1//\3/\4\5" target="_blank">\1//\3/\4\5</a>'[/COLOR][color=#00AA00][color=#0000FF],[/COLOR] $mess[color=#0000FF])[/COLOR][color=#FF0000];[/COLOR][/COLOR]
     
  7. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    Hidden спасибо. так работает... но теперь смайлики перестали отображаться)))))))))))

    PS мне под гостевуху....
     
  8. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    Приведи пример, каие именно, может щя исключения для них сделаю :)
     
  9. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    адреса должны иметь вид
    Code:
    images/smiles/smile37.gif
    а твоя строка переворачивает все слеши и ваще не пойми чего творит))
    Code:
    <img src="images/smiles/<a href="//smile9.gif/" target="_blank">//smile9.gif/</a>" border="0">
    чорт. я загнался совсем! Убейте меня!!!! я забыл что слеши надо У СЕБЯ перевернуть!!!! бекап юзаю..абассака я дурачок


    все исправил. теперь ситуация описана актуально)
     
    #9 DRON-ANARCHY, 30 Apr 2007
    Last edited: 30 Apr 2007
  10. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    Ну так она не может отличить имя с расширением от домена первого и второго уровня, можно не принимать единичный слеш перед доменным именем, можно фильтровать возможные доменные имена первого уровня, а можно фильтровать возможные расширения файлов, а вообще, смайлы должны обрабатываться после него. Когда я обрабатываю ббкоды, я их превращаю в промежуточную форму, чтоб не попадали под следующие выражения, а потом, всех сразу, в html
     
  11. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    Простите неразумного. Меня сегодня совсем мухи засидели)))
    вот это был ключевой момент. спасибо огромное!
     
  12. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    Смотри, главное проверь, чтоб они внутрь url не попали, лучше сразу на них исключения поставить, приведи какие именно смыйлы используешь
     
  13. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    Э.... не совсем понял...
    что именно нужно привести? Полные имена?
     
  14. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    Нет, какие именно смайлы?
    Пример: :) ;) :D :p ...
     
  15. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    а... ну это просто. Разновидности имеют такие символы...
    1) :)
    2) !)
    3) :lol:
    вроде ниче опасного

    [hidden *] Есть такая галочка "Отключить смайлики в тексте" ;)
    [dron-anarchy] Я запомню... ;)
    [Great] А никто ее еще не поставил :)

    PS закрываем-с...
     
    #15 DRON-ANARCHY, 30 Apr 2007
    Last edited by a moderator: 1 May 2007
  16. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    Ну вот, вроде всё предусмотрел :)
    В аттаче, т.к. форум фильтрует
     

    Attached Files:

    • url.zip
      File size:
      442 bytes
      Views:
      119
    1 person likes this.
  17. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    BB коды на регекспах не пишут - потенциальные места для XSS. Используйте конечный автомат, на phpclub'е видел отличную реализацию недавно.
     
  18. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    Это смотря кто пишет.
    Я лично больше доверяю своей реализации, чем неизвестно чьей, и буду уверен, в том, что туда не попадёт то, что не должно попасть, особенно после часов 3 перепроверки.
     
  19. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Ты не прав, т.к. по любому еще остается человеческий фактор.

    Ошибку может допустить любой, хотя вероятность появления ошибки с повышением опыта уменьшается.
     
  20. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    Полностью согласен, поэтому я и не хочу полагаться на то, что у того, кто пишет те фильтры, больше опыта.
    ;)
     
Thread Status:
Not open for further replies.