Otestuj svoji návštěvní knihu!

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.


Komentáře

[1] hcroqdfld [web] – 2011-05-28, 17.53

[2] Ruben [web] – 2011-06-01, 0.29

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

[3] cai123 – 2012-05-09, 11.04

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

Přidat komentář

Identifikace autora

(zobrazí se v antispam podobě)

Komentář

Nepoužívej HTML značky a piš pokud možno s diakritikou. Na ostatní komentáře se odkazuj např. [1]

Díky za tvůj názor!

Navigace

Hledání