Zásada pro zobrazovánà uživatelského vstupu je prostá – být pÅ™ipraven na cokoli. VyzkouÅ¡ej si, jak dopadne tvoje návÅ¡tÄ›vnà kniha (nebo jiná aplikace zobrazujÃcà uživatelský vstup), když jà pÅ™edhodÃÅ¡ trochu nároÄnÄ›jšà sousto (ASC, 3 kB) – změť záludných znaků, prapodivných odkazů a důmyslnÄ› sestavených mezer. Budu rád za vÅ¡echny nápady na rozÅ¡ÃÅ™enà testovacÃho souboru.
NÄ›které vÄ›ci nemůžeme oÅ¡etÅ™it úplnÄ›, jako tÅ™eba nalezenà hypertextového odkazu. Tady nezbývá, než se spolehnout, že uživatel uvede i protokol http://. Pokud totiž chceme najÃt i odkazy bez protokolu, musÃme hledat vzor www.Å™etÄ›zec.Å™etÄ›zec. Ne vÅ¡echny odkazy ovÅ¡em zaÄÃnajà řetÄ›zcem www., takže nakonec vycházà vzor Å™etÄ›zec.Å™etÄ›zec, a to bysme mÄ›li odkaz z každých dvou slov oddÄ›lených teÄkou.
V komentářÃch je ukázka, jak se s testovacÃm vstupem (ne)?poprala moje aplikace.
Ahoj Honzo,
jsem na Tvém blogu poprvé (dostal jsem se sem pÅ™es MS IE10 PP gradient tool, ke kterému Ti gratuluji) a zatÃm se mi zde velice lÃbÃ.
Zejména tento pÅ™ÃspÄ›vek o zpracovánà volného textového vstupu a Tvůj testovacà soubor mi pomohly vyladit můj odkazy-hledajÃcà regex v mém online notepadu – zápisnÃku http://scribz.net/ . Tam dovoluji lidem zaznamenávat jakékoli texty jako do plain-text editoru, a potom jim dynamicky servÃruji odkazy pro lehký pÅ™Ãstup. Proto umÃm velice dobÅ™e pochopit, jak je těžké „uhodnout“, co je legitimnà odkaz a co nenÃ.
Co se týÄe Tvého pÅ™Ãkladu, urÄitÄ› bych nerozeznával ‚<‘ a ‚>‘ jako platné znaky URI. Jestli je jeÅ¡tÄ› nÄ›kdo použÃvá (bez zakódovánÃ), tak si koleduje o problém. Jestli si dobÅ™e pamatuji, tak jsou stejnÄ› ilegálnÃ. TÃm bych vyÅ™eÅ¡il prvnà problém – HTML odkaz. (AlternativnÄ› bys mohl stÅ™Ãhat takovéto odkazy pÅ™ed znaky „">“, ale to také nenà dokonale systémové Å™eÅ¡enÃ.)
Ostatnà linky jsou bohužel neÅ™eÅ¡itelné, protože ‚[‘ a ‚]‘ jsou znaky použÃvané (tÅ™eba v session ID) a proto je nemůžeme vylouÄit. Na to by byla potÅ™eba dodateÄné logiky.
V mém zápisnÃku rozeznám odkaz, který je ve tvaru Å™etÄ›zec.Å™etÄ›zec pokud nenà pÅ™ÃliÅ¡ krátký a pokud nemá dvÄ› teÄky pÅ™ed lomÃtkem. Také ne nejšťastnÄ›jšà řeÅ¡enà a vyžaduje dodateÄné zpracovánÃ, ale funguje to hezky.
No a nakonec, pro prvotnà vyhledánà linky použÃvám tohoto regexu (v ASP.NET formátu):
\(?(((file|http|https|mailto|gopher|ftp|net\.pipe|net\.tcp|news|nntp):(//)?(www.)?)|www.|//)?(([\w-_+@])+\.)+\w+(:\d+)?([/\\]([\w-_+.:,;=&#/%!?~/\\\<\>\[\]\(\)@])*)?
Pro zjednoduÅ¡enÃ:
prefixes = @"(((file|http|https|mailto|gopher|ftp|net\.pipe|net\.tcp|news|nntp):(//)?(www.)?)|www.|//)";
strictCollection = @"([\w-_+@])"; // pre-slash portions
topLevel = @"\w";
looseCollection = @"([\w-_+.:,;=&#/%!?~/\\\<\>\[\]\(\)@])"; // post-slash portions
pattern = @"\(?" + prefixes + @"?(" + strictCollection + @"+\.)+" + topLevel + @"+(:\d+)?([/\\]" + looseCollection + @"*)?";
Jsem si jist, že by se tento pattern dal hodnÄ› vylepÅ¡it. Je sice celkem benevolentnÃ, ale zatÃm plnà svůj úÄel. Budu proto vÅ™ele oÄekávat každou pÅ™ipomÃnku.
Na testovánà regexů jsem si vytvoÅ™il tool http://www.chacaturian.com/cruncher pracujÃcà opÄ›t na ASP.NET enginu, jestli to nÄ›komu pomůže.
Přeji hodně zdaru,
Ruben
http://a1194219422.fotopages.com/
http://www.blogusers.com/sme_blog.php?u=a1194219422&action=view_post&post_id=61210
http://fr.weblog.26l.com/weblog.2141504.html
http://gvrl.com/blogview.asp?blogid=20688
http://a1194219422.over-blog.com/article-the-2012-basketball-shoes-designed-with-a-visible-sign-104088192.html
http://www.equestrianblogging.com/blogs/basketball-shoes
http://hi.baidu.com/a1194219422/blog/item/4075b3db120cca1df9dc612c.html
http://blog.sina.com.cn/s/blog_a33bc6790100yob1.html
http://19172742.blog.hexun.com/75203296_d.html
http://i.sohu.com/p/=v2=YNMoBDb3kDkxTMO1c3RtYWlsLmNvbQ==/blog/view/213582406.htm
http://a1194219422.insanejournal.com/
http://www.adultblogs.com/users/a1194219422/
http://www.indyarocks.com/blogs/blog_visiterview_main.php?id=1048309&sts=rec
http://aa1194219422.livejournal.com/547.html
http://a1194219422.diandian.com/
http://a1194219422.blog.com/2012/04/29/the-better-brands-of-basketball-shoes/
http://blog.cnfol.com/a1194219422/article/1335579778-58213826.html
http://a1194219422.createblog.com/blog/entry.php?id=299256
http://yaplog.jp/a1194219422/archive/1
http://www.kerchoonz.com/user/blogs/view/name_a1194219422/id_278484/title_the-air-jordan-shoes/
http://www.cnfblog.com/articles.php?article_id=411493
http://www.tudou.com/home/diary_v12573581.html
http://scubalot.com/node/18709
http://a1194219422.weebly.com/1/post/2012/05/wholesale-basketball-shoes.html
http://mpcollab.org/fwheel/node/14702
http://solobuscame.com/social/blog_entry.php?user=a1194219422&entry_id=292759#zh
http://obshestvo.ru/node/47259
http://www.weekendhk.com/blog/index.php/70034/viewspace-138817.html
http://www.imfriends.net/blog/167771/2012-basketball-shoes/
http://a1194219422.blogbus.com/logs/210412894.html
http://a1194219422.blogujem.cz/note/172928/you-can-buy-air-jordan-2.html
http://a1194219422.freeblog.hu/archives/2012/05/05/Once_you_are_searching_for_cheap_jordan_shoes/
http://solobuscame.com/social/blog_entry.php?user=a1194219422&entry_id=292759#zh
http://www.flixya.com/blog/4457730/Your-2012-basketball-shoes-safeguard-your-feet
http://www.4ppl.com/blog/entry/The_trendiest_brand_of_Air_Jordan_3
http://www.mojatu.com/blog/74233/jordan-shoes-need-to-normally-have-numerous-traction/
http://a1194219422.manablog.jp/archives/1
http://www.sanalkahve.com/user/blogs/view/name_a1194219422/id_79275/title_The-right-2012-basketball-shoes/
http://www.businessesdallas.com/community/blogs/entry/When-deciding-upon-a-pair-of-Wholesale-basketball-shoes-you-have-to-be-focused-on-obtaining-footwear-that-s-comfortable-durable-and-that-can-support-you-to-play-your-most-effective-You-will-need-to-try-to-find-these-in-regards-to-the-color-the-style-or-th
http://www.reneeolstead.com/blog/a1194219422/new-air-jordan-4
http://www.seo-mix.com/blog/when-shopping-for2012-basketball-shoes
http://myindiacafe.com/blogs/sportshoes/
http://a9587103761.magix.net/blog/sport-shoes/archives/1-Wholesale-basketball-shoes.html
http://www.vbsiglo21.net/modules.php?name=Journal&file=display&jid=767http://www.ms56.net/blog/blog.php?do=showone&uid=51301&type=blog&itemid=73560
http://www.a958710376.cif2.net/a_pair_of_cheap_jordan_shoes-pagblog-article_id10479.html
http://www.mainetoday.com/blogentry.html?id=96976
http://a958710376.worldofchaos.altervista.org/2012/05/09/air-jordan-16-are-light/
http://www.pat-schoolofnet.com/blog_entry.php?user=a958710376&blogentry_id=79700
zuTEJZ <a href="http://rgekjsqdushd.com/">rgekjsqdushd</a>, [url=http://jylnifklcdqu.com/]jylnifklcdqu[/url], [link=http://yulpncfczwfa.com/]yulpncfczwfa[/link], http://ttsegllkdryq.com/