<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog Mintdesign &#187; php</title>
	<atom:link href="http://blog.mintdesign.pl/php/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.mintdesign.pl</link>
	<description>Blog poświęcony tematyce tworzenia stron internetowych.</description>
	<lastBuildDate>Mon, 09 May 2011 18:46:48 +0000</lastBuildDate>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>Wyrażenia regularne cz. 1</title>
		<link>http://blog.mintdesign.pl/php/wyrazenia-regularne-cz-1.html</link>
		<comments>http://blog.mintdesign.pl/php/wyrazenia-regularne-cz-1.html#comments</comments>
		<pubDate>Thu, 11 Feb 2010 22:53:48 +0000</pubDate>
		<dc:creator>Virus</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[regexp]]></category>
		<category><![CDATA[regularne]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[wyrażenia]]></category>
		<category><![CDATA[wyrażenia regularne]]></category>

		<guid isPermaLink="false">http://blog.mintdesign.pl/?p=460</guid>
		<description><![CDATA[Wyrażenia regularne są łańcuchami znaków, które pomagają w odnajdywaniu w tekście różnych wzorców. Są nieocenioną pomocą w przypadku, gdy trzeba np. sprawdzić poprawność składniową adresu e-mail czy też wyodrębnić z tekstu ciąg wielkich liter o zadanej długości. Praktyczne zastosowania wyrażeń regularnych można mnożyć w nieskończoność &#8211; wszystko sprowadza się do porównania łańcucha znaków z zadanym [...]]]></description>
			<content:encoded><![CDATA[<p>Wyrażenia regularne są łańcuchami znaków, które pomagają w odnajdywaniu w tekście różnych wzorców. Są nieocenioną pomocą w przypadku, gdy trzeba np. sprawdzić poprawność składniową adresu e-mail czy też wyodrębnić z tekstu ciąg wielkich liter o zadanej długości. Praktyczne zastosowania wyrażeń regularnych można mnożyć w nieskończoność &#8211; wszystko sprowadza się do porównania łańcucha znaków z zadanym wzorcem i ewentualnym zamienianiu niektórych fragmentów tego wzorca na inne znaki.</p>
<p>Ten tutorial podzielę na dwie części. W pierwszej omówię same wyrażenia regularne, zaś część drugą poświęcę na ich zastosowanie w php. Ograniczę się wyłącznie do PERL-owych wyrażeń, które są alternatywą dla mniej wydajnych i odchodzących z użycia wyrażeń POSIX-owych (część elementów jest wspólna dla jednych i drugich).<br />
<span id="more-460"></span><br />
Aby jednak nie zaciemniać za bardzo przykładów w moim tutorialu, przedstawię w tym momencie najprostszą funkcję do obsługi wyrażeń regularnych w php &#8211; <strong>preg_match()</strong>. Jej najprostsza składnia przedstawia się następująco:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$czy_pasuje</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$wyrazenie</span><span style="color: #339933;">,</span> <span style="color: #000088;">$ciag</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Funkcja ta posiada dodatkowe parametry, o których wspomnę w dalszej części tutoriala. Należy również zaznaczyć, że wyrażenia używane w tej funkcji muszą zaczynać się i kończyć jednym dowolnym (oprócz backslasha) znakiem niealfanumerycznym, który musi być następnie unikany backslashem wewnątrz wyrażenia. Przyjęło się, że jest to slash, jednak w przypadku wyrażenia z dużą ilością slashów wewnątrz (np. adresy http) można zastosować inny, np. #.</p>
<h2>Podstawy</h2>
<p>Tak naprawdę każdy tekst nie zawierający znaków specjalnych jest wyrażeniem regularnym. Zwyczajne</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Ala ma kota</div></td></tr></tbody></table></div>
<p>jest wyrażeniem regularnym, do którego pasuje tekst <strong>Słyszałem, że Ala ma kota.</strong>. Warto zaznaczyć, że wyrażenia regularne są wrażliwe na wielkość liter. Oczywiście stosowanie samych takich ciągów jako wyrażeń mija się z celem. Skomplikujmy nieco nasze wyrażenie.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Ala ma (kota|psa)</div></td></tr></tbody></table></div>
<p>Tutaj nawias służy nam do zgrupowania wyrazów, które mogą pojawić się w tym miejscu. Wyrazy oddzielone są pionową kreską. W związku z tym powyższe wyrażenie pasuje zarówno do <strong>Ala ma kota</strong> jak i <strong>Ala ma psa</strong>. Gdybyśmy potrzebowali w którymś z wyrazów użyć nawiasu lub pionowej kreski, powinniśmy uniknąć ich przetworzenia za pomocą backslasha. Oto lista wszystkich znaków specjalnych, które muszą zostać poprzedzone backslashem, gdy mają być traktowane jako zwykły tekst.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">^ $ &lt; &gt; ( ) [ { . * ? + | \</div></td></tr></tbody></table></div>
<p>Oczywiście nie byłoby potrzeby unikania powyższych znaków, gdyby każdy z nich nie służył specjalnemu celowi. I tak na przykład, znak <strong>^</strong> służy do dopasowania wyrażenia do początku łańcucha, natomiast <strong>$</strong> do jego końca.</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'moje ulubione danie to placki'</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/placki/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// zwróci true;</span><br />
<a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/placki$/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// zwróci true;</span><br />
<a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^placki/'</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// zwróci false;</span></div></td></tr></tbody></table></div>
<p>Oczywiście gdy nasze wyrażenie będzie brzmiało &#8220;^placki$&#8221;, jedynym spełniającym go tekstem będzie słowo placki. Takie zastosowanie wyrażeń nie ma jednak sensu &#8211; dużo wydajniejsze jest użycie zwykłego porównania.</p>
<p>Jeśli chcemy sprawdzić, czy w danym miejscu w tekście występuje jeden z kilku możliwych znaków, używamy do tego nawiasów kwadratowych. W nawiasach tych możemy zastosować zakres &#8211; np. a-e, 0-9, A-Z. Nie ma potrzeby unikania znaku -, ponieważ zakres jest sprawdzany wyłącznie tam, gdzie to ma sens, np. między dwiema małymi, dwiema wielkimi literami lub między dwiema cyframi. Istnieje również możliwość zaprzeczenia podanemu zakresowi, stawiając znak <strong>^</strong> zaraz po lewym nawiasie kwadratowym. Przykłady:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/[aeiou]/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'fasola'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// zwróci true - w łańcuchu znajdują się te samogłoski;</span><br />
<a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/[A-Z]/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'fasola'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// zwróci false - w łańcuchu nie ma żadnych wielkich liter;</span><br />
<a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/[^0-9.-]/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'100 zł'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// zwróci true - w łańcuchu znajdują się znaki spoza podanego zakresu</span></div></td></tr></tbody></table></div>
<p>Czasem lepszym rozwiązaniem od użycia kilku zakresów naraz jest zastosowanie znaków specjalnych, reprezentujących szczególne grupy znaków. Oto najczęściej używane znaki specjalne:</p>
<table border="0">
<tbody>
<tr>
<td>Znak</td>
<td>Odpowiednik</td>
<td>Opis</td>
</tr>
<tr>
<td>.</td>
<td>(brak)</td>
<td>Dowolny znak</td>
</tr>
<tr>
<td>\s</td>
<td>[\t\r\n ]</td>
<td>Białe spacje</td>
</tr>
<tr>
<td>\S</td>
<td>[^\t\r\n ]</td>
<td>Wszystko oprócz białych spacji</td>
</tr>
<tr>
<td>\d</td>
<td>[0-9]</td>
<td>Cyfry</td>
</tr>
<tr>
<td>\D</td>
<td>[^0-9]</td>
<td>Wszystko oprócz cyfr</td>
</tr>
<tr>
<td>\w</td>
<td>[a-zA-Z0-9_]</td>
<td>Znaki stanowiące słowa</td>
</tr>
<tr>
<td>\W</td>
<td>[^a-zA-Z0-9_]</td>
<td>Domyśl się <img src='http://blog.mintdesign.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </td>
</tr>
</tbody>
</table>
<h2>Kwantyfikatory</h2>
<p>Aby móc sprawdzić, czy litera B znajduje się w wyrażeniu pięć (lub pięćset pięć) razy, nie ma sensu jej tam aż tyle pisać. Wystarczy użyć odpowiedniego kwantyfikatora. Używa się ich również do sprawdzenia, czy dany znak występuje raz albo w ogóle, co najmniej zero razy, co najmniej raz czy też od tylu do tylu razy. A oto one:</p>
<table border="0">
<tbody>
<tr>
<td>Wyrażenie</td>
<td>Pasujące łańcuchy</td>
<td>Wyjaśnienie</td>
</tr>
<tr>
<td>^a<strong>?</strong>$</td>
<td>&#8221;, &#8216;a&#8217;</td>
<td>Zero lub jeden raz</td>
</tr>
<tr>
<td>^a<strong>*</strong>$</td>
<td>&#8221;, &#8216;a&#8217;, &#8216;aa&#8217;, &#8216;aaa&#8217;&#8230;</td>
<td>Co najmniej zero razy</td>
</tr>
<tr>
<td>^a<strong>+</strong>$</td>
<td>&#8216;a&#8217;, &#8216;aa&#8217;, &#8216;aaa&#8217;&#8230;</td>
<td>Co najmniej raz</td>
</tr>
<tr>
<td>^a<strong>{7}</strong>$</td>
<td>&#8216;aaaaaaa&#8217;</td>
<td>Dokładnie 7 razy</td>
</tr>
<tr>
<td>^a<strong>{4,7}</strong>$</td>
<td>&#8216;aaaa&#8217;, &#8216;aaaaa&#8217;, &#8216;aaaaaa&#8217;, &#8216;aaaaaaa&#8217;</td>
<td>Od 4 do 7 razy</td>
</tr>
<tr>
<td>^a<strong>{4,}</strong>$</td>
<td>&#8216;aaaa&#8217;, &#8216;aaaaa&#8217;, &#8216;aaaaaa&#8217;&#8230;</td>
<td>Co najmniej cztery razy</td>
</tr>
<tr>
<td>^a<strong>{,4}</strong>$</td>
<td>&#8221;, &#8216;a&#8217;, &#8216;aa&#8217;, &#8216;aaa&#8217;, &#8216;aaaa&#8217;</td>
<td>Co najwyżej cztery razy</td>
</tr>
</tbody>
</table>
<p>Oczywiście kwantyfikatory działają również dla całych grup znaków, zarówno tych pogrupowanych za pomocą nawiasów kwadratowych jak i tych z oznaczeniami z poprzedniej tabeli. Przykładowo, <strong>\w+</strong> oznacza co najmniej jeden znak będący częścią słowa, natomiast <strong>[0-5]{2}</strong> oznacza dwie sąsiadujące ze sobą cyfry z zakresu od 0 do 5.</p>
<h2>Przykłady</h2>
<p>Przebrnąłeś już przez trochę suchej teorii &#8211; czas na sensowniejsze przykłady. Pamiętasz Alę z początku tutoriala? Gdyby między słowami znajdowała się więcej niż jedna spacja, to mimo iż treść jest wciąż taka sama, dla skryptu jest diametralnie różna. Nauczmy więc parsera uznawać więcej niż jedną spację między słowami, tworząc takie wyrażenie:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$expr</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/Ala\s+ma\s+kota/'</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$expr</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Ala &nbsp; ma kota'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// zwróci true</span><br />
<a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$expr</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">' Ala &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ma &nbsp; &nbsp; &nbsp; &nbsp; kota'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// też zwróci true</span><br />
<span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Ala<br />
<br />
ma<br />
kota'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// puste linie są częścią łańcucha znaków!</span><br />
<a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$expr</span><span style="color: #339933;">,</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// też zwróci true</span><br />
<a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$expr</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Ala nie ma kota'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// zwróci false</span></div></td></tr></tbody></table></div>
<p>A co, gdybyśmy chcieli, by wyrażenie było prawdziwe zarówno gdy ma kota, jak i go nie ma? Zmodyfikujmy nasze wyrażenie następująco:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$expr</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/Ala\s+(nie\s+)?ma\s+kota/'</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$expr</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Ala &nbsp;ma kota'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// true</span><br />
<a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$expr</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Ala &nbsp; &nbsp; nie &nbsp;ma kota'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// true</span><br />
<a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$expr</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ala NIE ma kota!!!11'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// false - wielkość liter ma znaczenie</span></div></td></tr></tbody></table></div>
<p>Zostawmy Alę już na dobre i zajmijmy się czymś, co prędzej zastosujemy na naszych stronach. Załóżmy, że chcemy, aby użytkownicy przysyłali nam obrazy &#8211; obrazy te mają jednak mieć nazwy w formacie <em>obraz_xxx</em> (gdzie xxx to jakaś liczba) i mogą mieć rozszerzenie jpg, gif lub png. Wyrażenie, które nam pomoże w sprawdzeniu nazwy, wyglądać będzie następująco:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/^obraz_\d+\.(jpg|gif|png)$/</div></td></tr></tbody></table></div>
<p><strong>Krótka analiza</strong>:<br />
Przede wszystkim nazwa pliku musi zaczynać się od słowa obraz &#8211; umieszczamy więc znak <strong>^</strong> i piszemy po nim obraz. Następnie po znaku podkreślenia znajduje się dowolna ilość cyfr, o czym mówi nam znak <strong>\d</strong> z kwantyfikatorem <strong>+</strong> (co najmniej jedna). Następnie w nazwie pliku musi znajdować się kropka &#8211; w wyrażeniu musimy uniknąć ją backslashem, w przeciwnym wypadku kropka zastąpiłaby nam dowolny znak. Następnie stosujemy alternatywę trzech rozszerzeń, po których nasze wyrażenie musi się kończyć, o czym informuje znak dolara.</p>
<p><strong>Inny przykład</strong> &#8211; mamy profil użytkownika, w którym może on wpisać adres swojej strony www. Stajemy przed dwoma problemami: czy użytkownik wpisał <em>http://</em> na początku swojego adresu? (jeśli nie, należy to dokleić przy generowaniu linka do jego strony) czy użytkownik wpisał poprawny adres www? (zakładamy, że dopuszczamy jedynie &#8220;typowe adresy&#8221;, jak np. <em>www.onet.pl</em>, a nie <em>www.strona.pl/cos.php?a=b%3B</em>&#8230;itd.)<br />
<strong>Pierwsze wyrażenie</strong> jest bardzo proste i nie robi nic więcej oprócz odpowiedzi na pierwsze pytanie:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">preg_match('#^http://#', $adres_strony);</div></td></tr></tbody></table></div>
<p><strong>Drugie wyrażenie</strong> będzie bardziej skomplikowane. Uwzględnijmy w nim, że wewnątrz adresu nie mogą znajdować się inne znaki niż alfanumeryczne, kropka, myślnik czy znak podkreślenia oraz przypilnujmy, by domena najwyższego poziomu nie była zbyt długa. Adres może, ale nie musi zaczynać się od <em>http://</em>.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#^(http://)?([a-zA-Z0-9][a-zA-Z0-9_-]*[a-zA-Z0-9]\.)+[a-z]{2,4}/?$#</div></td></tr></tbody></table></div>
<p>Straszne? Wiem. Przeanalizujmy to wyrażenie. Na początku sprawdzamy, czy <em>http://</em> występuje najwyżej raz za pomocą kwantyfikatora <strong>?</strong>. Słowo <em>http://</em> musimy wziąć w nawias, w przeciwnym wypadku znak zapytania stosowałby się wyłącznie do pojedynczego slasha. Następnie mamy kolejny nawias &#8211; grupę kolejnych subdomen, z których każda kończy się kropką. Kropkę w nawiasie koniecznie unikamy, jeśli nie chcemy, aby została przetworzona jako dowolny znak. Na początku i na końcu subdomeny mogą znajdować się wyłącznie litery i cyfry, a w środku dowolna ilość znaków ze środkowego nawiasu kwadratowego. Uwaga: zakładamy, że kolejne subdomeny mają przynajmniej dwa znaki długości. Po ostatniej kropce mogą wystąpić od dwóch do czterech małych liter jako domena najwyższego poziomu. Opcjonalnie na końcu adresu może znajdować się slash.</p>
<p>W tej części to już tyle. Następna pojawi się za tydzień i omówię w niej najistotniejsze funkcje PHP obsługujące wyrażenia regularne, a także bardziej zaawansowane konstrukcje w samych wyrażeniach. Żeby wam się specjalnie nie nudziło, mam dla was cztery ćwiczenia. Odpowiedzi możecie zostawiać tutaj w komentarzach lub w odpowiednim dziale na forum.</p>
<p><strong>A oto ćwiczenia</strong>:</p>
<ol>
<li>Numer telefonu w postaci xxx-xxx-xxx, z opcjonalnym numerem kierunkowym kraju na początku (np. 123-456-789, +48 666 666 666)</li>
<li>Adres filmiku na youtube &#8211; zwrócić uwagę na składnię linku do filmiku, dopuszczalne znaki w jego identyfikatorze i ich ilość. Zakładamy, że chodzi o najprostszy link, bez dodatkowych parametrów typu feature=related w adresie.</li>
<li>Adres e-mail. Chyba każdemu się przyda. Nie googlać, będę umiał rozpoznać wygooglane <img src='http://blog.mintdesign.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li>Zmodyfikować przykład z adresem www tak, aby dopuszczał również jednoliterowe (lub jednocyfrowe) subdomeny.</li>
</ol>
<ul class="related_post"><li><a href="http://blog.mintdesign.pl/php/dlaczego-warto-uzywac-stalych.html" title="Dlaczego warto używać stałych?">Dlaczego warto używać stałych?</a> (2)</li><li><a href="http://blog.mintdesign.pl/photoshop/videotutorial-realistyczny-napis-3d.html" title="[Videotutorial] Realistyczny napis 3D">[Videotutorial] Realistyczny napis 3D</a> (5)</li><li><a href="http://blog.mintdesign.pl/photoshop/tutorial-button-w-stylu-mac-os.html" title="[Tutorial] Button w stylu &#8216;Mac OS&#8217;">[Tutorial] Button w stylu &#8216;Mac OS&#8217;</a> (2)</li><li><a href="http://blog.mintdesign.pl/photoshop/tutorial-realistyczny-napis-3d.html" title="[Tutorial] Realistyczny napis 3D">[Tutorial] Realistyczny napis 3D</a> (2)</li><li><a href="http://blog.mintdesign.pl/photoshop/tutorial-szklane-menu.html" title="[Tutorial] Szklane menu">[Tutorial] Szklane menu</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.mintdesign.pl/php/wyrazenia-regularne-cz-1.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dlaczego warto używać stałych?</title>
		<link>http://blog.mintdesign.pl/php/dlaczego-warto-uzywac-stalych.html</link>
		<comments>http://blog.mintdesign.pl/php/dlaczego-warto-uzywac-stalych.html#comments</comments>
		<pubDate>Tue, 05 Jan 2010 21:20:39 +0000</pubDate>
		<dc:creator>Virus</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[const]]></category>
		<category><![CDATA[define]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[stałe]]></category>
		<category><![CDATA[tips & tricks]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://blog.mintdesign.pl/?p=387</guid>
		<description><![CDATA[W PHP (i w każdym chyba języku programowania) oprócz zmiennych istnieją również stałe. Jak łatwo się domyślić z nazwy, przyjmują one jedną wartość podczas definicji i nie można jej później zmienić operatorem przypisania. Zastosowanie stałych nie dla wszystkich jest oczywiste, początkujący programiści często nie doceniają wygody i przydatności ich stosowania. W tym artykule przedstawiam kilka [...]]]></description>
			<content:encoded><![CDATA[<p>W PHP (i w każdym chyba języku programowania) oprócz zmiennych istnieją również stałe. Jak łatwo się domyślić z nazwy, przyjmują one jedną wartość podczas definicji i nie można jej później zmienić operatorem przypisania. Zastosowanie stałych nie dla wszystkich jest oczywiste, początkujący programiści często nie doceniają wygody i przydatności ich stosowania. W tym artykule przedstawiam kilka z życia wziętych przykładów zastosowania stałych.<br />
<span id="more-387"></span><br />
Na początek jednak trochę teorii. Oto sposoby definiowania stałych w PHP:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.php.net/define"><span style="color: #990000;">define</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'STALA'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// definicja stałej STALA o wartości 10</span><br />
<span style="color: #000000; font-weight: bold;">const</span> INNA_STALA <span style="color: #339933;">=</span> <span style="color: #cc66cc;">20</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// od PHP 5.3.0: definicja stałej INNA_STALA o wartości 20</span></div></td></tr></tbody></table></div>
<p>Osobiście preferuję pierwszy sposób z powodu jego wszechstronności: w funkcji <strong>define()</strong> za nazwę stałej możemy podać zmienną o danej wartości.<br />
Pomimo iż w nazwach stałych dopuszczalne jest nazewnictwo takie same, jak u zmiennych (małe i wielkie litery, cyfry i znak podkreślenia), przyjęło się, iż stałe powinny mieć nazwy pisane wielkimi literami.<br />
Do stałych w kodzie odwołujemy się w następujący sposób:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">echo</span> STALA<span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">echo</span> <a href="http://www.php.net/constant"><span style="color: #990000;">constant</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'STALA'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">echo</span> <a href="http://www.php.net/constant"><span style="color: #990000;">constant</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$zmienna_z_nazwa_stalej</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>W przypadku definiowania stałych funkcją <strong>define()</strong> i zmienną w pierwszym parametrze, zmienna ta może zawierać dowolnego stringa. Gdy string ten zawiera znaki niedozwolone w przypadku normalnego nazywania stałych, możemy do tej stałej odwołać się jedynie poprzez funkcję <strong>constant()</strong>. W pozostałych przypadkach najlepiej jest po prostu wstawić nazwę stałej w danym miejscu kodu. Przy definiowaniu stałych wielkość liter jest rozróżniana. W przypadku odwołania się do nieistniejącej stałej generowany jest również notice, a nazwa nieistniejącej stałej, którą podaliśmy, zostaje przyjęta za jej wartość. Przykład:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.php.net/define"><span style="color: #990000;">define</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'JAKAS_STALA'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">123</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">echo</span> Jakas_stala<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// generowany jest notice o treści</span><br />
<span style="color: #666666; font-style: italic;">// &quot;Use of undefined constant Jakas_stala - assumed 'Jakas_stala'&quot;</span><br />
<span style="color: #666666; font-style: italic;">// i wyświetlony zostanie napis &quot;Jakas_stala&quot;</span></div></td></tr></tbody></table></div>
<p>Aby sprawdzić, czy stała o danej wartości istnieje, używamy funkcji <strong>defined()</strong>. Przykład użycia:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.php.net/define"><span style="color: #990000;">define</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'STALA'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/defined"><span style="color: #990000;">defined</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'STALA'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// zwraca true;</span><br />
<a href="http://www.php.net/defined"><span style="color: #990000;">defined</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'NIE_STALA'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// zwraca false;</span></div></td></tr></tbody></table></div>
<p>To na tyle teorii, przejdźmy do praktycznych zastosowań.</p>
<h2>Często stosowane wartości</h2>
<p>Weźmy za przykład skrypt, który dzieli dużą ilość newsów na strony. Musimy znać liczbę elementów, które mają się jednorazowo pojawiać na stronie, numer aktualnej strony oraz wyliczyć ilość wszystkich stron, aby móc znać odniesienie do ostatniej strony. Zakładając, że ilość elementów na stronę to 10, przykładowy fragment kodu wyglądałby tak:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$aktualna_strona</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'strona'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'strona'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$numer_ostatniej_strony</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/ceil"><span style="color: #990000;">ceil</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ilosc_danych</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">// pobranie danych z bazy</span><br />
<span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'SELECT cos FROM gdzies WHERE cos = '</span>jakos<span style="color: #0000ff;">' LIMIT '</span> <span style="color: #339933;">.</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$aktualna_strona</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">', 10'</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Liczba 10 pojawia się w powyższym kodzie trzy razy. Co w wypadku, gdy okaże się, że nie chcemy by elementów było 10, tylko 5? Musimy trzy razy zastąpić ręcznie dziesiątkę piątką. Sytuacja dodatkowo komplikuje się, gdy taki skrypt używany jest kilka razy.<br />
Dodatkowo, liczba 10 jest tutaj zwykłą liczbą, nieprzypisaną do żadnej zmiennej. Co to za liczba? Co oznacza i do czego służy? Patrząc na ten kod nie jest to takie oczywiste, a im później do niego wrócimy, tym mniejsza szansa, że będziemy wiedzieli o co w nim chodzi.<br />
Rozwiązanie z użyciem stałych jest dużo wygodniejsze jeśli chodzi o użyteczność i przejrzystość kodu. Na początku pliku definiujemy stałą o nazwie <strong>ITEMS_PER_PAGE</strong> i wartości 10:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.php.net/define"><span style="color: #990000;">define</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ITEMS_PER_PAGE'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Później w poprzednim skrypcie zamieniamy każdą dziesiątkę na naszą stałą:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$aktualna_strona</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'strona'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'strona'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$numer_ostatniej_strony</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/ceil"><span style="color: #990000;">ceil</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ilosc_danych</span> <span style="color: #339933;">/</span> ITEMS_PER_PAGE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">// pobranie danych z bazy</span><br />
<span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'SELECT cos FROM gdzies WHERE cos = '</span>jakos<span style="color: #0000ff;">' LIMIT '</span> <span style="color: #339933;">.</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$aktualna_strona</span> <span style="color: #339933;">*</span> ITEMS_PER_PAGE<span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">', '</span> <span style="color: #339933;">.</span> ITEMS_PER_PAGE<span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>W tym wypadku, gdy chcemy zmienić liczbę elementów na stronie, wystarczy tylko zmienić wartość w funkcji <strong>define()</strong>.</p>
<h2>Parametry funkcji</h2>
<p>W PHP istnieje wiele predefiniowanych stałych, które znajdują zastosowanie w wielu miejscach. I tak na przykład funkcja <strong>preg_match_all()</strong> za czwarty parametr może przyjąć trzy stałe: <strong>PREG_PATTERN_ORDER</strong>, <strong>PREG_SET_ORDER</strong> i <strong>PREG_OFFSET_CAPTURE</strong>. Ich wartości to odpowiednio 1, 2 i 256. Teoretycznie liczby są krótsze i szybciej się je zapisze, jednak o ile czytelniej i łatwiej w zapamiętaniu używać stałych? Jeszcze bardziej użyteczny przykład ma się z typami plików w GD. Co jest czytelniejsze i łatwiejsze do zapamiętania:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.php.net/getimagesize"><span style="color: #990000;">getimagesize</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$image</span><span style="color: #339933;">,</span> <a href="http://www.php.net/list"><span style="color: #990000;">list</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$width</span><span style="color: #339933;">,</span> <span style="color: #000088;">$height</span><span style="color: #339933;">,</span> <span style="color: #000088;">$type</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$type</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;to jest JPG&quot;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>czy</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.php.net/getimagesize"><span style="color: #990000;">getimagesize</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$image</span><span style="color: #339933;">,</span> <a href="http://www.php.net/list"><span style="color: #990000;">list</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$width</span><span style="color: #339933;">,</span> <span style="color: #000088;">$height</span><span style="color: #339933;">,</span> <span style="color: #000088;">$type</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$type</span> <span style="color: #339933;">==</span> IMAGETYPE_JPEG<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;to jest JPG&quot;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>?<br />
Definiowanie stałych ułatwia życie przy pisaniu funkcji, w których parametry mogą mieć jedną z kilku dopuszczalnych wartości. Warto zaznaczyć, że w takich przypadkach jak podano najlepiej sprawdzają się stałe będące liczbami naturalnymi &#8211; porównywanie ich jest dużo szybsze niż porównywanie łańcuchów znaków.<br />
Co ciekawe, stałe jeszcze bardziej ułatwiają życie, gdy potrzebujemy funkcji, w których jeden parametr może przyjąć kilka niezależnych wartości. Tutaj pojawiają się flagi.</p>
<h2>Flagi</h2>
<p>Flagi są stałymi przyjmującymi za wartości kolejne potęgi dwójki (1, 2, 4, 8, 16&#8230;). Używając ich, bardzo łatwo można ustalić, czego akurat wymagamy od funkcji.<br />
Napiszmy przykładową funkcję walidującą dane w formularzu. Załóżmy, że dopuszczamy podanie przez użytkownika danych składających się tylko z małych liter, tylko z wielkich liter, tylko z cyfr oraz dowolnych kombinacji wymienionych. Na początku definiujemy stałe, które będą używane jako flagi.</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.php.net/define"><span style="color: #990000;">define</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'LOWERCASE'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/define"><span style="color: #990000;">define</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'UPPERCASE'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/define"><span style="color: #990000;">define</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DIGITS'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>W jaki sposób możemy ustawić więcej niż jedną flagę? Służy do tego operator binarny OR: <strong>|</strong> (pojedyncza pionowa kreska &#8211; nie mylić z operatorem logicznym, podwójną pionową kreską). Sprawdzenie, czy dana flaga jest ustawiona odbywa się z użyciem operatora binarnego AND: <strong>&#038;</strong> &#8211; pojedynczy ampersand. Zdefiniujmy naszą funkcję:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">function</span> waliduj<span style="color: #009900;">&#40;</span><span style="color: #000088;">$dane</span><span style="color: #339933;">,</span> <span style="color: #000088;">$flagi</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp;<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$flagi</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// żadna flaga nie jest ustawiona - wszystkie dane są poprawne - zwracamy wynik</span><br />
&nbsp;<span style="color: #000088;">$wyrazenie</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/[^'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// łańcuch, który posłuży nam do budowy wyrażenia regularnego</span><br />
&nbsp;<span style="color: #666666; font-style: italic;">// dokładamy znaki do zbioru, z którego znaki nie powinny wystąpić w sprawdzanym łańcuchu</span><br />
&nbsp;<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$flagi</span> <span style="color: #339933;">&amp;</span> LOWERCASE<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$wyrazenie</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'a-z'</span><span style="color: #339933;">;</span><br />
&nbsp;<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$flagi</span> <span style="color: #339933;">&amp;</span> UPPERCASE<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$wyrazenie</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'A-Z'</span><span style="color: #339933;">;</span><br />
&nbsp;<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$flagi</span> <span style="color: #339933;">&amp;</span> DIGITS<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$wyrazenie</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'0-9'</span><span style="color: #339933;">;</span><br />
&nbsp;<span style="color: #000088;">$wyrazenie</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">']/'</span><span style="color: #339933;">;</span><br />
&nbsp;<span style="color: #666666; font-style: italic;">// jeśli w wyrażeniu znajdują się znaki spoza zbioru, zwracamy fałsz</span><br />
&nbsp;<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$wyrazenie</span><span style="color: #339933;">,</span> <span style="color: #000088;">$dane</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #b1b100;">return</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><br />
&nbsp;<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #b1b100;">return</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span><br />
&nbsp;<span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Dla tych pierwszy raz widzących wyrażenia regularne: zaczynać i kończyć się muszą one dowolnym niealfanumerycznym znakiem (najczęściej używa się slasha). Nawiasy kwadratowe służą do wyodrębnienia zbioru znaków, który ma się pojawić w łańcuchu. Jeśli zaraz po lewym nawiasie występuje znak <strong>^</strong>, wówczas wyrażenie dotyczy wszystkich znaków spoza tego zbioru.<br />
Przykładowe wywołania funkcji z ustawionymi flagami:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">waliduj<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Tekst'</span><span style="color: #339933;">,</span> LOWERCASE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// zwróci 0</span><br />
waliduj<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Tekst'</span><span style="color: #339933;">,</span> LOWERCASE <span style="color: #339933;">|</span> UPPERCASE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// zwróci 1</span><br />
waliduj<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'T3kst'</span><span style="color: #339933;">,</span> LOWERCASE <span style="color: #339933;">|</span> UPPERCASE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// zwróci 0</span><br />
waliduj<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'T3kst'</span><span style="color: #339933;">,</span> LOWERCASE <span style="color: #339933;">|</span> UPPERCASE <span style="color: #339933;">|</span> DIGITS<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// zwróci 1</span></div></td></tr></tbody></table></div>
<p>Notka: w pierwszym przypadku sprawdzane wyrażenie regularne to <strong>/[^a-z]/</strong>, w drugim i trzecim: <strong>/[^a-zA-Z]/</strong>, a w czwartym <strong>/[^a-zA-Z0-9]/</strong>. Więcej o wyrażeniach regularnych w kolejnym tutorialu.</p>
<p>To by było na tyle. Mam nadzieję, że art się przyda, itd, itp <img src='http://blog.mintdesign.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Jest to moje pierwsze dzieło tego typu, więc nie szczędzić krytyki ani pomysłów na kolejne tutoriale w komentarzach.</p>
<ul class="related_post"><li><a href="http://blog.mintdesign.pl/php/wyrazenia-regularne-cz-1.html" title="Wyrażenia regularne cz. 1">Wyrażenia regularne cz. 1</a> (1)</li><li><a href="http://blog.mintdesign.pl/inne/jak-sciagac-wieksze-zdjecia-z-serwisu-istockphoto-com.html" title="<!--:pl-->Jak ściągać większe zdjęcia z serwisu istockphoto.com<!--:--><!--:en-->How to download photos from istockphoto.com in high resolution<!--:-->"><!--:pl-->Jak ściągać większe zdjęcia z serwisu istockphoto.com<!--:--><!--:en-->How to download photos from istockphoto.com in high resolution<!--:--></a> (4)</li><li><a href="http://blog.mintdesign.pl/photoshop/videotutorial-realistyczny-napis-3d.html" title="[Videotutorial] Realistyczny napis 3D">[Videotutorial] Realistyczny napis 3D</a> (5)</li><li><a href="http://blog.mintdesign.pl/php/jak-wyswietlic-info-o-autorze-wpisu.html" title="Jak wyświetlić info o autorze wpisu?">Jak wyświetlić info o autorze wpisu?</a> (2)</li><li><a href="http://blog.mintdesign.pl/photoshop/tutorial-button-w-stylu-mac-os.html" title="[Tutorial] Button w stylu &#8216;Mac OS&#8217;">[Tutorial] Button w stylu &#8216;Mac OS&#8217;</a> (2)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.mintdesign.pl/php/dlaczego-warto-uzywac-stalych.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Jak wyświetlić info o autorze wpisu?</title>
		<link>http://blog.mintdesign.pl/php/jak-wyswietlic-info-o-autorze-wpisu.html</link>
		<comments>http://blog.mintdesign.pl/php/jak-wyswietlic-info-o-autorze-wpisu.html#comments</comments>
		<pubDate>Sun, 01 Nov 2009 21:41:45 +0000</pubDate>
		<dc:creator>Mateusz Lomber</dc:creator>
				<category><![CDATA[Tips&Tricks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[info]]></category>
		<category><![CDATA[szablon]]></category>
		<category><![CDATA[tips & tricks]]></category>

		<guid isPermaLink="false">http://blog.mintdesign.pl/?p=161</guid>
		<description><![CDATA[Prowadząc blog na którym umieszcza wpisy więcej niż jedna osoba bardzo przydatnym elementem w każdej notce byłoby jakieś bardziej szczegółowe info o autorze. (Gdy samo imię i nazwisko / nick już nie wystarczą) WordPress posiada gotowe funkcje pozwalające nam wyświetlić takie informacje o autorze notki w szablonach jak: Techniczne: Id (numer identyfikacyjny autora) Login (nazwa [...]]]></description>
			<content:encoded><![CDATA[<p>Prowadząc blog na którym umieszcza wpisy więcej niż jedna osoba bardzo przydatnym elementem w każdej notce byłoby jakieś bardziej szczegółowe info o autorze. (Gdy samo imię i nazwisko / nick już nie wystarczą)</p>
<p>WordPress posiada gotowe funkcje pozwalające nam wyświetlić takie informacje o autorze notki w szablonach jak:<br />
<span id="more-161"></span></p>
<h2>Techniczne:</h2>
<ul>
<li>Id (numer identyfikacyjny autora)</li>
<li>Login (nazwa użytkownika jaką się logujemy do PA)</li>
</ul>
<h2>Informacyjne:</h2>
<ul>
<li>Imię</li>
<li>Nick</li>
<li>Nazwisko</li>
<li>E-mail</li>
<li>Opis (opis biograficzny autora)</li>
<li>Stronę www</li>
<li>YIM (Yahoo Instant Messenger)</li>
<li>AIM (AOL Instant Messenger) </li>
</ul>
<h2>Funkcjonalne:</h2>
<ul>
<li>Wyświetlanie liczby wpisów autora</li>
<li>Link do wszystkich postów autora</li>
</ul>
<p>Funkcje te należy zamieszczać w pliku szablonu <strong>(/wp-content/themes/nazwa-szablonu/single.php)</strong></p>
<p>Należy też pamiętać o tym, że funkcja ta powinna się znajdować w obrębie pętli &#8211; czyli za:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>have_posts<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>have_posts<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> the_post<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<p>a przed:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endwhile</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">else</span><span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">?&gt;</span><br />
...<br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endif</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<h2>Wyświetlenie Id Autora</h2>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> the_author_ID<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<h2>Wyświetlenie Loginu Autora</h2>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> the_author_login<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<h2>Wyświetlenie Imienia Autora</h2>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> the_author_firstname<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<h2>Wyświetlenie Nicku (Pseudonimu) Autora</h2>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> the_author_nickname<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<h2>Wyświetlenie Nazwiska Autora</h2>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> the_author_lastname<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<h2>Wyświetlenie E-maila Autora</h2>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> the_author_email<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<h2>Wyświetlenie Opisu biograficznego Autora</h2>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> the_author_description<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<h2>Wyświetlenie Strony www Autora</h2>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> the_author_url<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<h2>Wyświetlenie YIM Autora</h2>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> the_author_yim<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<h2>Wyświetlenie AIM Autora</h2>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> the_author_aim<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<h2>Wyświetlenie Liczby wpisów Autora</h2>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> the_author_posts<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<h2>Wyświetlenie Linka do wszystkich postów Autora</h2>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> the_author_posts_link<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<ul class="related_post"><li><a href="http://blog.mintdesign.pl/inne/jak-sciagac-wieksze-zdjecia-z-serwisu-istockphoto-com.html" title="<!--:pl-->Jak ściągać większe zdjęcia z serwisu istockphoto.com<!--:--><!--:en-->How to download photos from istockphoto.com in high resolution<!--:-->"><!--:pl-->Jak ściągać większe zdjęcia z serwisu istockphoto.com<!--:--><!--:en-->How to download photos from istockphoto.com in high resolution<!--:--></a> (4)</li><li><a href="http://blog.mintdesign.pl/inne/aadamentium-darmowy-szablon-mybb.html" title="Aadamentium &#8211; Darmowy szablon MyBB">Aadamentium &#8211; Darmowy szablon MyBB</a> (2)</li><li><a href="http://blog.mintdesign.pl/inne/deepblue2-0-darmowy-szablon-pod-mybb.html" title="DeepBlue2.0 &#8211; Darmowy szablon MyBB">DeepBlue2.0 &#8211; Darmowy szablon MyBB</a> (17)</li><li><a href="http://blog.mintdesign.pl/php/dlaczego-warto-uzywac-stalych.html" title="Dlaczego warto używać stałych?">Dlaczego warto używać stałych?</a> (2)</li><li><a href="http://blog.mintdesign.pl/inne/reklamowanie-bloga.html" title="Reklamowanie bloga">Reklamowanie bloga</a> (3)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.mintdesign.pl/php/jak-wyswietlic-info-o-autorze-wpisu.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

