home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 December / PCWorld_2005-12_cd.bin / novinky / Interval / clanek07.htm < prev    next >
Encoding:
Extensible Markup Language  |  2005-06-01  |  21.5 KB  |  249 lines

  1. <?xml version='1.0' encoding='windows-1250'?>
  2. <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  3. <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='cs' lang='cs'>
  4. <head>
  5. <meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />
  6. <meta http-equiv='Content-language' content='cs' />
  7. <meta http-equiv='Cache-control' content='no-cache' />
  8. <meta http-equiv='Pragma' content='no-cache' />
  9. <meta http-equiv='Expires' content='-1' />
  10. <meta name='robots' content='index,follow' />
  11. <meta name='googlebot' content='index,follow,snippet,noarchive' />
  12. <meta name='description' content='Interval.cz - Internetov² magazφn o webdesignu, v²voji webov²ch aplikacφ a e-komerci. VÜe podstatnΘ o technologiφch XHTML, HTML, CSS, DHTML, JavaScript, XML, .NET, ASP, PHP, Java, J2ME, SQL, WAP...' />
  13. <meta name='keywords' content='Interval' />
  14. <meta name='ICBM' content='49.1915, 16.626' />
  15. <meta name='DC.Title' content='Interval.cz' />
  16. <meta name='DC.Identifier' content='http://interval.cz' />
  17. <meta name='DC.Language' content='cs' />
  18. <meta http-equiv='pics-label' content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "ICRAonline EN v2.0" l gen true for "http://interval.cz" r (nz 1 vz 1 lz 1 oz 1 cz 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://interval.cz" r (n 0 s 0 v 0 l 0))' />
  19. <meta http-equiv='imagetoolbar' content='no' />
  20. <meta http-equiv='MSThemeCompatible' content='no' />
  21. <meta name='MSSmartTagsPreventParsing' content='true' />
  22. <link rel='shortcut icon' type='image/x-icon' href='favicon.ico' />
  23. <link rel='alternate' type='application/rss+xml' title='RSS Interval.cz' href='http://interval.cz/__rss/rss.asp' />
  24. <link rel='home' href='http://interval.cz' />
  25. <link rel='search' href='http://interval.cz/search_ex.asp' />
  26. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/html4.css' />
  27. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/interval-display.css' />
  28. <link rel='stylesheet' type='text/css' media='print' href='__services/styles/interval-print.css' />
  29. <title>Perl-compatible regulßrnφ v²razy v PHP - dalÜφ u₧iteΦnΘ funkce -- PHP -- V²voj aplikacφ -- Interval.cz</title>
  30. </head>
  31. <body class='interval interval-articles'>
  32. <div id='page-header'><div id='interval-logo'><h1 title='Interval.cz - denn∞ o tvorb∞ webu a e-komerci (logo & index link)'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Interval.cz<span></span></a></h1></div><div id='advertising-page-header'></div><div class='page-maker'> </div></div>
  33. <div id='page-topmenu'><h2 class='textversion'>Navigace</h2><div id='page-mainmenu'><h3 class='textversion'>Hlavnφ menu</h3><ul><li class='first selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Titulnφ strana</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=14'>Webdesign</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=15'>V²voj aplikacφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=18'>E-komerce</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=17'>Nßstroje</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=16'>Magazφn</a></li><li class='right selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.inshop.cz'>Knihkupectvφ</a></li><li class='right'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interforum.interval.cz'>Interforum</a></li></ul></div><div id='page-mainmenu-maker'> </div></div>
  34. <div id='page-body'><div id='page-left'><div id='article'>
  35.  
  36.  
  37. <h2>Perl-compatible regulßrnφ v²razy v PHP - dalÜφ u₧iteΦnΘ funkce</h2>
  38. <p id='prepend'>Ve vÜech p°edchßzejφcφch Φlßncφch jsme si p°i p°edvßd∞nφ jednotliv²ch regulßrnφch v²raz∙ vystaΦili pouze se dv∞ma funkcemi. V tomto Φlßnku se proto seznßmφme s n∞kolika dalÜφmi u₧iteΦn²mi funkcemi pro prßci s Perl-compatible regulßrnφmi v²razy v PHP. Vzhledem k tomu, ₧e vÜe, co se t²Φe konstrukce regulßrnφch v²raz∙ samotn²ch, bylo ji₧ probrßno, budu se p°i popisovßnφ jednotliv²ch p°φklad∙ v∞novat hlavn∞ funkcφm sam²m.</p>
  39.  
  40. <h3>Funkce preg_match_all()</h3>
  41. <p>Funkce <code>preg_match_all($re,$str,$matched)</code> funguje velmi podobn∞ jako funkce <code>preg_match($re,$str,$matched)</code> (viz <a href='http://interval.cz/clanek.asp?article=3792' title='Pecka, Miroslav: Perl-compatible regulßrnφ v²razy v PHP - subv²razy a zp∞tnß reference'>subv²razy a zp∞tnß reference</a>) jen s tφm rozdφlem, ₧e najde v °et∞zci <samp>$str</samp> vÜechny °et∞zce, kterΘ odpovφdajφ regulßrnφmu v²razu <samp>$re</samp> (zatφmco <code>preg_match($re,$str,$matched)</code> najde jen prvnφ v²skyt). Funkce <code>preg_match_all()</code> vracφ poΦet °et∞zc∙, kterΘ odpovφdajφ celΘmu regulßrnφmu v²razu.</p>
  42. <p>P°φklad demonstrujφcφ rozdφlnΘ chovßnφ funkcφ:</p>
  43.  
  44. <div class='sample'>
  45. $re="/(CZK|EUR|USD) (\d+)/";
  46. <br />$str="CZK 1200 nebo EUR 40 nebo USD 50";
  47. <br />$result1=preg_match($re,$str,$matched1); //vrßtφ int(1)
  48. <br />$result2=preg_match_all($re,$str,$matched2); //vrßtφ int(3)
  49. </div>
  50.  
  51. <p>Pole <samp>$matched1</samp> pak bude (<samp>var_dump($matched1)</samp>):</p>
  52.  
  53. <div class='sample'>
  54. array(3) {
  55. <br />  [0]=>
  56. <br />  string(8) "CZK 1200"
  57. <br />  [1]=>
  58. <br />  string(3) "CZK"
  59. <br />  [2]=>
  60. <br />  string(4) "1200"
  61. <br />}
  62. </div>
  63.  
  64. <p>Pole <samp>$matched2</samp> pak bude (<samp>var_dump($matched2)</samp>):</p>
  65.  
  66. <div class='sample'>
  67. array(3) {
  68. <br />  [0]=>
  69. <br />  array(3) {
  70. <br />    [0]=>
  71. <br />    string(8) "CZK 1200"
  72. <br />    [1]=>
  73. <br />    string(6) "EUR 40"
  74. <br />    [2]=>
  75. <br />    string(6) "USD 50"
  76. <br />  }
  77. <br />  [1]=>
  78. <br />  array(3) {
  79. <br />    [0]=>
  80. <br />    string(3) "CZK"
  81. <br />    [1]=>
  82. <br />    string(3) "EUR"
  83. <br />    [2]=>
  84. <br />    string(3) "USD"
  85. <br />  }
  86. <br />  [2]=>
  87. <br />  array(3) {
  88. <br />    [0]=>
  89. <br />    string(4) "1200"
  90. <br />    [1]=>
  91. <br />    string(2) "40"
  92. <br />    [2]=>
  93. <br />    string(2) "50"
  94. <br />  }
  95. <br />}
  96. </div>
  97.  
  98. <p>Index <samp>0</samp> v obou polφch (<samp>$matched1</samp> a <samp>$matched2</samp>) oznaΦuje, ₧e se jednß o °et∞zec (respektive °et∞zce) odpovφdajφcφ celΘmu regulßrnφmu v²razu. ╪et∞zce odpovφdajφcφ jednotliv²m subv²raz∙m jsou indexovßny Φφsly jednotliv²ch subv²raz∙ (v naÜem p°φpad∞ <samp>1</samp>, <samp>2</samp>). V poli <samp>$matched2</samp> je ka₧d² prvek (<samp>$matched2[0]</samp>, <samp>$matched2[1]</samp>, <samp>$matched2[2]</samp>) sßm o sob∞ polem. Indexy v t∞chto polφch odpovφdajφ (t°em) jednotliv²m nalezen²m °et∞zc∙m.</p>
  99. <p>Pokud se vßm nelφbφ, ₧e takto vzniklΘ dvojrozm∞rnΘ pole <samp>$matched2</samp> je indexovßno nejd°φve podle subv²raz∙ a a₧ potΘ podle nalezen²ch °et∞zc∙, m∙₧ete toto chovßnφ zm∞nit pomocφ p°φznaku <code>PREG_SET_ORDER</code>, kter² se funkci p°edß jako jejφ Φtvrt² argument.</p>
  100. <p>Pou₧ijeme-li stejnou hodnotu prom∞nn²ch <samp>$re</samp> a <samp>$str</samp> jako v p°ikladu v²Üe a zavolßme funkci <samp>preg_match_all($re, $str, $matched3, PREG_SET_ORDER)</samp>, tato funkce vytvo°φ pole <samp>$matched3</samp>:</p>
  101.  
  102. <div class='sample'>
  103. array(3) {
  104. <br />  [0]=>
  105. <br />  array(3) {
  106. <br />    [0]=>
  107. <br />    string(8) "CZK 1200"
  108. <br />    [1]=>
  109. <br />    string(3) "CZK"
  110. <br />    [2]=>
  111. <br />    string(4) "1200"
  112. <br />  }
  113. <br />  [1]=>
  114. <br />  array(3) {
  115. <br />    [0]=>
  116. <br />    string(6) "EUR 40"
  117. <br />    [1]=>
  118. <br />    string(3) "EUR"
  119. <br />    [2]=>
  120. <br />    string(2) "40"
  121. <br />  }
  122. <br />  [2]=>
  123. <br />  array(3) {
  124. <br />    [0]=>
  125. <br />    string(6) "USD 50"
  126. <br />    [1]=>
  127. <br />    string(3) "USD"
  128. <br />    [2]=>
  129. <br />    string(2) "50"
  130. <br />  }
  131. <br />}
  132. </div>
  133.  
  134. <h3>Funkce preg_grep()</h3>
  135. <p>Funkce <code>preg_grep($re, $strings)</code> mß dva argumenty (parametry). Prvnφm argumentem je regulßrnφ v²raz, druh²m argumentem je pole °et∞zc∙. Funkce vracφ pole slo₧enΘ z prvk∙ (p∙vodnφho pole <samp>$strings</samp>), kterΘ odpovφdajφ regulßrnφmu v²razu <samp>$re</samp>.</p>
  136. <p>╪ekn∞me, ₧e mßme pole obsahujφcφ hesla u₧ivatel∙ a chceme z nich vybrat pouze hesla delÜφ ne₧ 5 znak∙.</p>
  137.  
  138. <div class='sample'>
  139. $re="/\w{6,}/";
  140. <br />$strings=array("uu123","jaro","abcdefg","hohoho");
  141. <br />$result=preg_grep($re,$strings);
  142. </div>
  143.  
  144. <p>V²slednΘ pole <samp>$result</samp> bude obsahovat po₧adovanß hesla:</p>
  145.  
  146. <div class='sample'>
  147. array(2) {
  148. <br />  [2]=>
  149. <br />  string(7) "abcdefg"
  150. <br />  [3]=>
  151. <br />  string(6) "hohoho"
  152. <br />}
  153. </div>
  154.  
  155. <h3>Funkce preg_replace_callback()</h3>
  156. <p>Pomocφ funkce <code>preg_replace()</code> jsme mohli zam∞nit °et∞zec odpovφdajφcφ regulßrnφmu v²razu za jin² °et∞zec (s vyu₧itφm °et∞zce "zachycenΘho" pomocφ regulßrnφho v²razu Φi subv²razu). S pomocφ <code>preg_replace_callback()</code> dokß₧eme jeÜt∞ mnohem vφce. ╪et∞zec odpovφdajφcφ regulßrnφmu v²razu m∙₧eme toti₧ nahradit °et∞zcem, kter² zφskßme jako nßvratovou hodnotu vlastnφ (u₧ivatelsky definovanΘ) funkce. Tato naÜe funkce p°itom m∙₧e pracovat s °et∞zcem, kter² odpovφdß regulßrnφmu v²razu (Φi subv²razu).</p>
  157. <p>╪ekn∞me, ₧e mßme k dispozici seznam dvojcifern²ch Φφsel, kterß p°edstavujφ roky (respektive letopoΦty). NaÜφm ·kolem je p°evΘst letopoΦty dvojcifernΘ na letopoΦty Φty°cifernΘ, a to tak, ₧e do roku 29 vΦetn∞ budou p°evßd∞ny na letopoΦty ve tvaru <samp>20XX</samp> a od roku 30 (vΦetn∞) v²Üe budou p°evßd∞ny na letopoΦty ve tvaru <samp>19XX</samp>. Asi tuÜφte, ₧e naÜe (u₧ivatelsky definovanß) funkce bude mφt za ·kol prßv∞ rozhodnout zda doplnit "19" Φi "20".</p>
  158.  
  159. <div class='sample'>
  160. function letopocet($rok)
  161. <br />{
  162. <br />  if($rok[0]<30)
  163. <br />  {
  164. <br />    $prefix="20";}
  165. <br />  else
  166. <br />  {
  167. <br />    $prefix="19";
  168. <br />  };
  169. <br />  return $prefix.$rok[0];
  170. <br />};
  171. <br />
  172. <br />$re="/\d{2}/";
  173. <br />$function_name="letopocet"; //nßzev u₧ivatelskΘ funkce
  174. <br />$str="12, 91, 45, 29, 30, 01";
  175. <br />$result=preg_replace_callback($re,$function_name,$str);
  176. </div>
  177.  
  178. <p>V prom∞nnΘ <samp>$result</samp> pak zφskßme °et∞zec <samp>2012, 1991, 1945, 2029, 1930, 2001</samp>.</p>
  179. <p>CelΘ to funguje tak, ₧e funkce <code>preg_replace_callback()</code> zavolß u₧ivatelsky definovanou funkci (jejφ₧ nßzev obdr₧φ jako hodnotu svΘho druhΘho argumentu) a tΘ p°edß pole obsahujφcφ °et∞zec, kter² odpovφdß regulßrnφmu v²razu (p°φpadn∞ tΘ₧ °et∞zce, kterΘ odpovφdajφ jednotliv²m subv²raz∙m). ╪et∞zec, kter² odpovφdß celΘmu regulßrnφmu v²razu, je v poli pod indexem <samp>0</samp>. U₧ivatelskß funkce zpracuje n∞jak²m zp∙sobem p°edanß data a poÜle svou nßvratovou hodnotu zp∞t funkci <code>preg_replace_callback()</code>. Toto se provede pro ka₧dΘ nahrazenφ. V okam₧iku, kdy jsou vÜechna nahrazenφ provedena, m∙₧e funkce <code>preg_replace_callback()</code> skonΦit a vrßtit svou nßvratovou hodnotu (tedy cel² upraven² °et∞zec).</p>
  180.  
  181. <h3>Funkce preg_split()</h3>
  182. <p>Funkce <code>preg_split($re, $str)</code>, rozd∞lφ °et∞zec <samp>$str</samp> na Φßsti, kterΘ vrßtφ jako pole °et∞zc∙. Jako odd∞lovaΦ se pou₧ije °et∞zec odpovφdajφcφ regulßrnφmu v²razu <samp>$re</samp>. Op∞t mal² p°φklad:</p>
  183.  
  184. <div class='sample'>
  185. $re="/[,; ]+/";
  186. <br />$str="honza@inmail.cz;jarda@jarda.com filip@mudrc.cz ,; tomas@svaty.cz";
  187. <br />$result=preg_split($re,$str);
  188. </div>
  189.  
  190. <p>V naÜem p°φpad∞ regulßrnφmu v²razu popisujφcφmu odd∞lovaΦ odpovφdß (neprßzdn²) °et∞zec slo₧en² ze znak∙ Φßrka, st°ednφk a mezera v libovolnΘm po°adφ a poΦtu. A tak pole <samp>$result</samp> bude obsahovat ji₧ jen jednotlivΘ e-mailovΘ adresy:</p>
  191.  
  192. <div class='sample'>
  193. array(4) {
  194. <br />  [0]=>
  195. <br />  string(15) "honza@inmail.cz"
  196. <br />  [1]=>
  197. <br />  string(15) "jarda@jarda.com"
  198. <br />  [2]=>
  199. <br />  string(14) "filip@mudrc.cz"
  200. <br />  [3]=>
  201. <br />  string(14) "tomas@svaty.cz"
  202. <br />}
  203. </div>
  204.  
  205. <h3>Funkce preg_quote()</h3>
  206. <p>Tuto funkci m∙₧eme oznaΦit jako pomocnou. Nezpracovßvß toti₧ urΦit² °et∞zec pomocφ regulßrnφho v²razu, ale pom∙₧e nßm p°i tvorb∞ regulßrnφho v²razu. N∞kdy toti₧ pot°ebujeme vytvo°it regulßrnφ v²raz a₧ za b∞hu naÜeho skriptu a tak nem∙₧eme "ruΦn∞" oÜet°it metaznaky (doplnit p°ed n∞ <samp>\</samp>), jestli₧e chceme potlaΦit jejich specißlnφ funkΦnost.</p>
  207. <p>Za b∞hu skriptu nßm vznikne nap°φklad °et∞zec <samp>a+b=c</samp>, kter² chceme pou₧φt jako regulßrnφ v²raz. Pokud zavolßme <samp>preg_quote("a+b=c")</samp>, funkce vrßtφ °et∞zec <samp>a\+b\=c</samp>.</p>
  208. <p>Nesmφme zapomenout, ₧e cel² regulßrnφ v²raz je uzav°en v odd∞lovaΦφch (delimiters), m∞li bychom proto takΘ zajistit, aby znaku, kter² pou₧φvßme jako odd∞lovaΦ (v naÜem p°φpad∞ pou₧φvßme obyΦejnΘ lomφtko <samp>/</samp>) takΘ p°edchßzelo zp∞tnΘ lomφtko <samp>\</samp>. Proto₧e funkce nem∙₧e sama o sob∞ v∞d∞t, jak² odd∞lovaΦ pou₧φvßme, p°edßme ji tuto informaci v nepovinnΘm druhΘm argumentu.</p>
  209. <p>Pokud tedy zavolßme nap°φklad <samp>preg_quote("a+b/c=d","/")</samp>, funkce vrßtφ °et∞zec <samp>a\+b\/c\=d</samp>. Jak m∙₧ete vid∞t, znak <samp>\</samp> je i p°ed znakem <samp>=</samp>, aΦkoli <samp>=</samp> nenφ metaznak. Funkce toti₧ dopl≥uje zp∞tnß lomφtka i p°ed znaky, kterΘ mohou tvo°it specißlnφ konstrukce (nap°φklad tvrzenφ o nßsledujφcφm a p°edchßzejφcφm). Zp∞tn²m lomφtkem jsou proto dopln∞ny znaky <samp>.</samp>, <samp>\</samp>, <samp>+</samp>, <samp>*</samp>, <samp>?</samp>, <samp>[</samp>, <samp>^</samp>, <samp>]</samp>, <samp>$</samp>, <samp>(</samp>, <samp>)</samp>, <samp>{</samp>, <samp>}</samp>, <samp>=</samp>, <samp>!</samp>, <samp><</samp>, <samp>></samp>, <samp>|</samp> a <samp>:</samp>.</p>
  210.  
  211. <div id='article-author'>
  212. <a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/autor.asp?author=244'>Pecka, Miroslav</a> (17. 5. 2005)
  213.  
  214. </div>
  215.  
  216. <div class='refer'><h3><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/serial.asp?serial=218' title='p°ehled Φlßnk∙ vΦetn∞ anotacφ'>Perl-compatible regulßrnφ v²razy v PHP</a></h3><p>Regulßrnφ v²razy jsou mocn²m nßstrojem, kter² m∙₧e v²razn∞ zjednoduÜit a zp°ehlednit k≤d programu. NejΦast∞ji je m∙₧eme pou₧φt p°i kontrole Φi "parsovßnφ" vstupnφch dat. Tato sΘrie Φlßnk∙ ji₧ byla uzav°ena, aΦkoli dalÜφ pokraΦovßnφ nelze vylouΦit.</p><ul><li><strong>Perl-compatible regulßrnφ v²razy v PHP - dalÜφ u₧iteΦnΘ funkce</strong> (prßv∞ Φtete)</li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3877'>Perl-compatible regulßrnφ v²razy v PHP - tvrzenφ v praxi, podmφn∞nΘ subv²razy</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3859'>Perl-compatible regulßrnφ v²razy v PHP - lokßlnφ modifikßtory, tvrzenφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3839'>Perl-compatible regulßrnφ v²razy v PHP - specißlnφ typy uzßvorkovßnφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3824'>Perl-compatible regulßrnφ v²razy v PHP - modifikßtory a lφnΘ kvantifikßtory</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3806'>Perl-compatible regulßrnφ v²razy v PHP - hranice</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3792'>Perl-compatible regulßrnφ v²razy v PHP - subv²razy a zp∞tnß reference</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3776'>Perl-compatible regulßrnφ v²razy v PHP - praktickΘ p°φklady</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3758'>Perl-compatible regulßrnφ v²razy v PHP - zßkladnφ konstrukce</a></li></ul></div>
  217.  
  218.  
  219. </div></div>
  220. <div id='page-right'><h2 class='textversion'>Prav² sloupek</h2>
  221. <div id='search'><h3 class='textversion'>Vyhledßvßnφ</h3><form method='get' action='http://interval.cz/search.asp'><div><input type='text' name='hledej' class='text' /><input type='submit' class='submit' value='Najdi!' /></div></form><div><a href='http://interval.cz/search_ex.asp'>RozÜφ°enΘ vyhledßvßnφ</a></div></div>
  222.  
  223.  
  224.  
  225. <div class='page-right-box book'>
  226.     <h3>Kni₧nφ novinka</h3>
  227.     <div class='page-right-box-in'>
  228.         <div class='book-top'>
  229.             <h4><a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=249'>XDHTML - referenΦnφ p°φruΦka</a></h4>
  230.         </div>
  231.         <div class='image'>
  232.             <img src='podklady/knihy/image.jpg' alt='obßlka' title='obßlka' /></a>
  233.         </div>
  234.         <div class='book-bottom'>Cena: <span class='book-price-old'>200 KΦ</span> <span class='book-price-new'>180 KΦ</span></div>
  235.     </div>
  236. </div>
  237.  
  238.  
  239.  
  240. <div class='page-right-box reading'><h3 title='NejΦten∞jÜφ Φlßnky za poslednφch 14 dn∙'>NejΦten∞jÜφ</h3><div class='page-right-box-in'><ul><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3894'>CSS3 - zßklady styl∙ v novΘm kabßt∞</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3892'>Sout∞₧ o PC a notebooky firmy DEXX 05/21</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3895'>InternetovΘ akcelerßtory obecn∞</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3889'>Kdo si J2ME, nezlobφ - trocha pohybu</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3890'>CodeBeside v ASP.NET 2.0</a></li></ul></div></div><div class='page-right-box cauldron'><h3 title='Nejdiskutovan∞jÜφ Φlßnky za poslednφch 21 dn∙'>Diskuznφ kotel</h3><div class='page-right-box-in'><ul><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3888' title='(41 komentß°∙)'>CSS3 - kaskßdovΘ styly budoucnosti</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3894' title='(19 komentß°∙)'>CSS3 - zßklady styl∙ v novΘm kabßt∞</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3895' title='(11 komentß°∙)'>InternetovΘ akcelerßtory obecn∞</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3893' title='(9 komentß°∙)'>WAP 2.0 - formßtovßnφ textu</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3889' title='(9 komentß°∙)'>Kdo si J2ME, nezlobφ - trocha pohybu</a></li></ul></div></div>
  241.  
  242.  
  243.  
  244. <div class='page-right-box emailserv'><h3>Email servis</h3><div class='page-right-box-in'><form action='prihlaseni.asp' method='post'><div class='shell'><input class='text' type='text' name='adresa' /></div><div class='shell'><input class='radio' type='radio' value='1' name='co' checked='checked' />T²dennφ p°ehled Φlßnk∙</div><div class='shell'><input class='radio' type='radio' value='2' name='co' />HELP konference</div><div class='shell'><input class='submit' type='submit' value='P°ihlßsit' /></div></form></div></div>
  245. </div>
  246. <div class='page-maker'> </div><div class='page-maker-white'> </div></div>
  247. <div id='page-foot'><div id='page-foot-menu'><a href='http://interval.cz/reklama.asp'>Inzerce na Interval.cz</a> | <a href='http://interval.cz/redakce.asp'>Redakce Interval.cz</a> | <a href='http://interval.cz/autori.asp'>Hledßme novΘ autory</a></div><div id='issn'>ISSN 1212-8651</div><div id='page-foot-zoner'>© Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje <a href='http://interval.cz/privacy.asp'>prßvnφ p°edpisy</a>o ochran∞ osobnφch ·daj∙.</div></div>
  248. </body>
  249. </html>