<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0UGSX49eip7ImA9WhRRFE4.&quot;"><id>tag:blogger.com,1999:blog-33088939</id><updated>2011-11-28T04:13:48.062+04:00</updated><category term="imdb" /><title>PHP Tunes</title><subtitle type="html">PHP tips, tricks and things</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://phptunes.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://phptunes.blogspot.com/" /><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://photos1.blogger.com/blogger/1828/3628/320/me.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/PhpTunes" /><feedburner:info uri="phptunes" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUEBQng6eCp7ImA9Wx5RGU4.&quot;"><id>tag:blogger.com,1999:blog-33088939.post-6694367065505248038</id><published>2010-08-27T22:10:00.004+04:00</published><updated>2010-08-27T22:27:33.610+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-27T22:27:33.610+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="imdb" /><title>Brand new service - a live image widget with actual IMDB rating</title><content type="html">We all use torrents to download movies and so on. The best rating for the movies is &lt;a href="http://www.imdb.com"&gt;IMDb.com&lt;/a&gt;, but torrent releasers copying an IMDb rating at the moment of the post. Often issue is rating has been changed after posting (when you're looking for a movie to download).&lt;br /&gt;&lt;br /&gt;So, I create a service to make rating in post actual. The thing is pretty simple - service will re-check movie rating on IMDb periodically and change it if needed.&lt;br /&gt;&lt;br /&gt;Check this out: &lt;a href="http://imdb.snick.ru"&gt;http://imdb.snick.ru&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To find or add movie you should follow a few steps:&lt;br /&gt;1. Find a movie on IMDB.com&lt;br /&gt;2. Paste link of a movie to a search field on imdb.snick.ru frontpage&lt;br /&gt;3. Examine rating and use one of export options&lt;br /&gt;&lt;br /&gt;Example for a "Machete" (2010) movie: &lt;a href="http://imdb.snick.ru/movie/tt0985694" target="_blank"&gt;&lt;img class="imdb_informer" title="Actual IMDB rating for Machete 2010" src="http://imdb.snick.ru/ratefor/tt0985694.png" border="0"/&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33088939-6694367065505248038?l=phptunes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3X1GI-oJGkEbC5l3oYkyQTVZU4g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3X1GI-oJGkEbC5l3oYkyQTVZU4g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3X1GI-oJGkEbC5l3oYkyQTVZU4g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3X1GI-oJGkEbC5l3oYkyQTVZU4g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpTunes/~4/QKCN7VWxhIg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phptunes.blogspot.com/feeds/6694367065505248038/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33088939&amp;postID=6694367065505248038" title="Комментарии: 12" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/6694367065505248038?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/6694367065505248038?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/PhpTunes/~3/QKCN7VWxhIg/brand-new-service-live-image-widget.html" title="Brand new service - a live image widget with actual IMDB rating" /><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://photos1.blogger.com/blogger/1828/3628/320/me.jpg" /></author><thr:total>12</thr:total><feedburner:origLink>http://phptunes.blogspot.com/2010/08/brand-new-service-live-image-widget.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAAQnoyeSp7ImA9WxNXGUk.&quot;"><id>tag:blogger.com,1999:blog-33088939.post-5060061146232348746</id><published>2009-10-07T22:22:00.002+04:00</published><updated>2009-10-07T22:39:03.491+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-07T22:39:03.491+04:00</app:edited><title>Open Petition to Adobe (FP40 issue)</title><content type="html">This is a notes on &lt;a href="http://bugs.adobe.com/jira/browse/FP-40" target="_blank"&gt;Adobe Flash Player FP-40 issue&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you'll try to create simple text input field in Adobe Flash and will type non-latin characters --- you'll fail if: you're using Linux, FreeBSD, Mac OSX, some Windows (Vista too), or swf-file was published with wmode=transparent or wmode=opaque options.&lt;br /&gt;&lt;br /&gt;This is an known bug (know as FP-40). It was created two or more years ago in Adobe bugtracker.&lt;br /&gt;&lt;br /&gt;Why it not fixed? I don't know. May be Adobe don't know &lt;b&gt;how&lt;/b&gt; fix it. May be Adobe don't &lt;b&gt;want&lt;/b&gt; fix it. Who knows? Who cares?&lt;br /&gt;&lt;br /&gt;We care. We all spent many hours, day, week and months to find workaround for issue with no luck. There is no solution I seen! And many developers decide to switch to Java FX or Silverlight/Moonlight technologies. But it's impossible when you develop shared Flash application for posting in blogs, livejournal, facebook, myspace, etc - swf-embed support only.&lt;br /&gt;&lt;br /&gt;So, I've started online petition to Adobe: &lt;a href="http://www.petitiononline.com/3YUJUPHx/petition.html"&gt;http://www.petitiononline.com/3YUJUPHx/petition.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This petition helps Adobe to change priority of FP40 issue and fix it faster than few years =)&lt;br /&gt;&lt;br /&gt;If you, your friends or friend's of your friend is familiar with Flash/Flex - give link to this post, please.&lt;br /&gt;&lt;br /&gt;Thanks a lot!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33088939-5060061146232348746?l=phptunes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iA4mHxlwqSgZd8XU-5O1P6yrQjM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iA4mHxlwqSgZd8XU-5O1P6yrQjM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iA4mHxlwqSgZd8XU-5O1P6yrQjM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iA4mHxlwqSgZd8XU-5O1P6yrQjM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpTunes/~4/p9Budk7082A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phptunes.blogspot.com/feeds/5060061146232348746/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33088939&amp;postID=5060061146232348746" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/5060061146232348746?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/5060061146232348746?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/PhpTunes/~3/p9Budk7082A/open-petition-to-adobe-fp40-issue.html" title="Open Petition to Adobe (FP40 issue)" /><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://photos1.blogger.com/blogger/1828/3628/320/me.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://phptunes.blogspot.com/2009/10/open-petition-to-adobe-fp40-issue.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UAQn4_fCp7ImA9WxNXGU4.&quot;"><id>tag:blogger.com,1999:blog-33088939.post-4064820138389695060</id><published>2009-10-07T22:00:00.002+04:00</published><updated>2009-10-07T22:14:03.044+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-07T22:14:03.044+04:00</app:edited><title>Открытая петиция к Adobe</title><content type="html">Речь пойдет о баге &lt;a href="http://bugs.adobe.com/jira/browse/FP-40" target="_blank"&gt;FP-40&lt;/a&gt; в Adobe FlashPlayer'e.&lt;br /&gt;&lt;br /&gt;Если вы попробуете создать во флеше текстовое поле и ввести в него что-то по-русски и у вас получится, значит вам повезло и в вашей версии или сборке Windows текстовое поле нормально работает. В противном случае (некоторые Windows и любой юникс, включая OSX) вы увидите "персидскую вязь" =)&lt;br /&gt;&lt;br /&gt;Под виндами это чаще проявляется когда флешку запускают в нестандартном режиме, который регулируется параметром wmode=transparent или wmode=opaque.&lt;br /&gt;&lt;br /&gt;В общем, давно известный баг, года два точно, а то и больше - номер бага равен 40 =) Посмотрите на текущие номера багов в трекере Adobe =)&lt;br /&gt;&lt;br /&gt;Беда в том, что Adobe либо не умеет исправлять это баг либо не хочет. Невозможность создавать на флеше кросс-платформенные приложения с текстовым вводом заставляет массу разработчиков извращаться со своими workaround'ами этой проблемы либо использовать другие технологии типа Java FX, Silverlight/Moonlight.&lt;br /&gt;&lt;br /&gt;Мне это надоело и я открыл петицию к Adobe: &lt;a href="http://www.petitiononline.com/3YUJUPHx/petition.html" target="_blank"&gt;http://www.petitiononline.com/3YUJUPHx/petition.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Это американская система и я рассчитываю, что популярность петиции позволит Adobe ускориться в плане исправления бага. Это в наших силах.&lt;br /&gt;&lt;br /&gt;Если у вас есть знакомые flash-разработчики или они есть у ваших знакомых - покажите им эту запись. Это здорово поможет нам всем. Хватит тратить время на исправление &lt;b&gt;чужих&lt;/b&gt; ошибок.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33088939-4064820138389695060?l=phptunes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pmnDSVPpmfkCJacCKnQJFXwUm8s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pmnDSVPpmfkCJacCKnQJFXwUm8s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pmnDSVPpmfkCJacCKnQJFXwUm8s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pmnDSVPpmfkCJacCKnQJFXwUm8s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpTunes/~4/yqteOr1DqQE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phptunes.blogspot.com/feeds/4064820138389695060/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33088939&amp;postID=4064820138389695060" title="Комментарии: 5" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/4064820138389695060?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/4064820138389695060?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/PhpTunes/~3/yqteOr1DqQE/adobe.html" title="Открытая петиция к Adobe" /><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://photos1.blogger.com/blogger/1828/3628/320/me.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://phptunes.blogspot.com/2009/10/adobe.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8DSXg7fCp7ImA9WxVXEk8.&quot;"><id>tag:blogger.com,1999:blog-33088939.post-322394110824602884</id><published>2009-02-10T02:01:00.003+03:00</published><updated>2009-02-10T02:41:18.604+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T02:41:18.604+03:00</app:edited><title>PHP Array and Object Magic</title><content type="html">Sometimes it will be useful to convert object to array or array to object: iterate, store, modify, etc.&lt;br /&gt;&lt;br /&gt;It's simple with PHP5:&lt;br /&gt;&lt;pre style='color:#d1d1d1;background:#000000; padding: 5px;'&gt;&lt;span style='color:#ffffff; '&gt;$myItem&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;=&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#e66170; font-weight:bold; '&gt;array&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;(&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#ffffff; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;&lt;span style='color:#00c4c4; '&gt;"color"&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;=&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;&gt;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#00c4c4; '&gt;"black"&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;,&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#ffffff; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;&lt;span style='color:#00c4c4; '&gt;"size"&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;=&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;&gt;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#00c4c4; '&gt;"medium"&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;,&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#ffffff; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;&lt;span style='color:#00c4c4; '&gt;"pieces"&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;=&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;&gt;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#008c00; '&gt;100&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;,&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#ffffff; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;&lt;span style='color:#00c4c4; '&gt;"cost"&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;=&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;&gt;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#009f00; '&gt;44.99&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#d2cd86; '&gt;)&lt;/span&gt;&lt;span style='color:#b060b0; '&gt;;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#ffffff; '&gt;$myItemObject&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;=&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;(&lt;/span&gt;&lt;span style='color:#bb7977; '&gt;object&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;)&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#ffffff; '&gt;$myItem&lt;/span&gt;&lt;span style='color:#b060b0; '&gt;;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#e66170; font-weight:bold; '&gt;echo&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#00c4c4; '&gt;"Array as object:&lt;/span&gt;&lt;span style='color:#008080; '&gt;\n&lt;/span&gt;&lt;span style='color:#00c4c4; '&gt;"&lt;/span&gt;&lt;span style='color:#b060b0; '&gt;;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#e66170; font-weight:bold; '&gt;print_r&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;(&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;$myItemObject&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;)&lt;/span&gt;&lt;span style='color:#b060b0; '&gt;;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#e66170; font-weight:bold; '&gt;echo&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#00c4c4; '&gt;"&lt;/span&gt;&lt;span style='color:#008080; '&gt;\n&lt;/span&gt;&lt;span style='color:#00c4c4; '&gt;"&lt;/span&gt;&lt;span style='color:#b060b0; '&gt;;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#ffffff; '&gt;$myItemArray&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;=&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;(&lt;/span&gt;&lt;span style='color:#e66170; font-weight:bold; '&gt;array&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;)&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#ffffff; '&gt;$myItemObject&lt;/span&gt;&lt;span style='color:#b060b0; '&gt;;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#e66170; font-weight:bold; '&gt;echo&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#00c4c4; '&gt;"Object as array:&lt;/span&gt;&lt;span style='color:#008080; '&gt;\n&lt;/span&gt;&lt;span style='color:#00c4c4; '&gt;"&lt;/span&gt;&lt;span style='color:#b060b0; '&gt;;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#e66170; font-weight:bold; '&gt;print_r&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;(&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;$myItemArray&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;)&lt;/span&gt;&lt;span style='color:#b060b0; '&gt;;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Output:&lt;br /&gt;&lt;pre style="background:#eeeeee; padding: 5px;"&gt;Array as object:&lt;br /&gt;&lt;b&gt;stdClass Object&lt;/b&gt;&lt;br /&gt;(&lt;br /&gt;    [color] =&gt; black&lt;br /&gt;    [size] =&gt; medium&lt;br /&gt;    [pieces] =&gt; 100&lt;br /&gt;    [cost] =&gt; 44.99&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;Object as array:&lt;br /&gt;&lt;b&gt;Array&lt;/b&gt;&lt;br /&gt;(&lt;br /&gt;    [color] =&gt; black&lt;br /&gt;    [size] =&gt; medium&lt;br /&gt;    [pieces] =&gt; 100&lt;br /&gt;    [cost] =&gt; 44.99&lt;br /&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Be careful with protected and private class members:&lt;br /&gt;&lt;pre style='color:#d1d1d1;background:#000000; padding: 5px;'&gt;&lt;span style='color:#e66170; font-weight:bold; '&gt;class&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; Casting&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#b060b0; '&gt;{&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#ffffff; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;&lt;span style='color:#e66170; font-weight:bold; '&gt;public&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#ffffff; '&gt;$pub&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;=&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#00c4c4; '&gt;"I'm a public member"&lt;/span&gt;&lt;span style='color:#b060b0; '&gt;;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#ffffff; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;&lt;span style='color:#e66170; font-weight:bold; '&gt;protected&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#ffffff; '&gt;$pro&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;=&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#00c4c4; '&gt;"I'm a protected from outlanders"&lt;/span&gt;&lt;span style='color:#b060b0; '&gt;;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#ffffff; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&lt;/span&gt;&lt;span style='color:#e66170; font-weight:bold; '&gt;private&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#ffffff; '&gt;$pri&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;=&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#00c4c4; '&gt;"I'm a hidden property"&lt;/span&gt;&lt;span style='color:#b060b0; '&gt;;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#b060b0; '&gt;}&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#ffffff; '&gt;$casting&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;=&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#e66170; font-weight:bold; '&gt;new&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; Casting&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;(&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;)&lt;/span&gt;&lt;span style='color:#b060b0; '&gt;;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#e66170; font-weight:bold; '&gt;print_r&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;(&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;$casting&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;)&lt;/span&gt;&lt;span style='color:#b060b0; '&gt;;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style='color:#e66170; font-weight:bold; '&gt;print_r&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;(&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;(&lt;/span&gt;&lt;span style='color:#e66170; font-weight:bold; '&gt;array&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;)&lt;/span&gt;&lt;span style='color:#ffffff; '&gt; &lt;/span&gt;&lt;span style='color:#ffffff; '&gt;$casting&lt;/span&gt;&lt;span style='color:#d2cd86; '&gt;)&lt;/span&gt;&lt;span style='color:#b060b0; '&gt;;&lt;/span&gt;&lt;span style='color:#ffffff; '&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Output:&lt;br /&gt;&lt;pre style="background:#eeeeee; padding: 5px;"&gt;Casting Object&lt;br /&gt;(&lt;br /&gt;    [pub] =&gt; I'm a public member&lt;br /&gt;    [pro:protected] =&gt; I'm a protected from outlanders&lt;br /&gt;    [pri:private] =&gt; I'm a hidden property&lt;br /&gt;)&lt;br /&gt;Array&lt;br /&gt;(&lt;br /&gt;    [pub] =&gt; I'm a public member&lt;br /&gt;    &lt;b&gt;[*pro]&lt;/b&gt; =&gt; I'm a protected from outlanders&lt;br /&gt;    &lt;b&gt;[Castingpri]&lt;/b&gt; =&gt; I'm a hidden property&lt;br /&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33088939-322394110824602884?l=phptunes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BPsCgp3owb7R04BHwGOVpITEv_M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BPsCgp3owb7R04BHwGOVpITEv_M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BPsCgp3owb7R04BHwGOVpITEv_M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BPsCgp3owb7R04BHwGOVpITEv_M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpTunes/~4/tLkIOUU6cyE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phptunes.blogspot.com/feeds/322394110824602884/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33088939&amp;postID=322394110824602884" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/322394110824602884?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/322394110824602884?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/PhpTunes/~3/tLkIOUU6cyE/php-array-and-object-magic.html" title="PHP Array and Object Magic" /><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://photos1.blogger.com/blogger/1828/3628/320/me.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://phptunes.blogspot.com/2009/02/php-array-and-object-magic.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEGRXw7fyp7ImA9WB5WGU0.&quot;"><id>tag:blogger.com,1999:blog-33088939.post-261482391140809198</id><published>2007-07-31T19:00:00.000+04:00</published><updated>2007-07-31T21:23:44.207+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-31T21:23:44.207+04:00</app:edited><title>Ubuntu 7.04 (Feisty): PHP installation with MSSQL</title><content type="html">&lt;p&gt;Ubuntu is a great Linux distribution, but MSSQL support is poor. There is nothing about MSSQL in &lt;code&gt;apt-get&lt;/code&gt; or Synaptic package manager. This small HOWTO fixes problem. See &lt;a href='http://panthar.org/2006/06/15/php-with-mssql-on-ubuntu-606/' target='_blank'&gt;HOWTO: PHP with MSSQL on Ubuntu 6.06&lt;/a&gt; if you are using Ubuntu 6.06 or want to try another way to reach PHP with MSSQL.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Step 1. Get the sources and packages&lt;/span&gt;&lt;br /&gt;&lt;p&gt;You must have a php5, php5-dev, php5-src and freetds.&lt;br /&gt;&lt;pre&gt;sudo apt-get install php5 php5-dev freetds&lt;br /&gt;sudo apt-get source php5&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Step 2. Building MSSQL module&lt;/span&gt;&lt;br /&gt;&lt;p&gt;Apt-get will unpack php5 sources into php5-5.x.x directory. Navigate to &lt;code&gt;php5-5.x.x/ext/mssql&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;sudo phpize&lt;br /&gt;sudo ./configure --with-mssql&lt;br /&gt;sudo make&lt;/pre&gt;&lt;br /&gt;After make you will see something like this:&lt;br /&gt;&lt;pre&gt;...&lt;br /&gt;Libraries have been installed in:&lt;br /&gt;   /home/snick/Software/php5-5.2.1/ext/mssql/modules&lt;br /&gt;...&lt;/pre&gt;&lt;br /&gt;PHP modules located in /usr/lib/php5/20060613+lfs/ (change last directory if differs). Just copy new module:&lt;br /&gt;&lt;pre&gt;sudo cp php5-5.2.1/ext/mssql/modules/mssql.so \&lt;br /&gt;  /usr/lib/php5/20060613+lfs&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Step 3. Configuring PHP&lt;/span&gt;&lt;br /&gt;&lt;p&gt;Setup PHP to use new module:&lt;br /&gt;&lt;pre&gt;sudo vim /etc/php5/conf.d/mssql.ini&lt;/pre&gt;&lt;br /&gt;Add text &lt;code&gt;extension=mssql.so&lt;/code&gt; and save the file. Restart Apache.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Make sure that you correctly setup &lt;code&gt;/etc/freetds/freetds.conf&lt;/code&gt; for your servers.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33088939-261482391140809198?l=phptunes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zu-ZanEqEr4wc3eUEhQeDtFFw2g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zu-ZanEqEr4wc3eUEhQeDtFFw2g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zu-ZanEqEr4wc3eUEhQeDtFFw2g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zu-ZanEqEr4wc3eUEhQeDtFFw2g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpTunes/~4/exIj-vJAgdE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phptunes.blogspot.com/feeds/261482391140809198/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33088939&amp;postID=261482391140809198" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/261482391140809198?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/261482391140809198?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/PhpTunes/~3/exIj-vJAgdE/ubuntu-704-feisty-php-installation-with.html" title="Ubuntu 7.04 (Feisty): PHP installation with MSSQL" /><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://photos1.blogger.com/blogger/1828/3628/320/me.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://phptunes.blogspot.com/2007/07/ubuntu-704-feisty-php-installation-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQMSX09cSp7ImA9WxVXEk8.&quot;"><id>tag:blogger.com,1999:blog-33088939.post-4072125721516874936</id><published>2007-03-02T18:33:00.002+03:00</published><updated>2009-02-10T01:59:48.369+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T01:59:48.369+03:00</app:edited><title>JCal Pro - Russian language</title><content type="html">Натолкнулся недавно на CMS &lt;a href="http://www.joom.ru/" target="_blank"&gt;Joomla&lt;/a&gt;. Симпатичная штука, задачи свои решает, обросла множеством плагинчиков и является веткой известной CMS &lt;a href="http://www.mamboserver.com/" target="_blank"&gt;Mambo&lt;/a&gt;. Понадобился мне календарь с хорошим внешним видом и с возможностью публикации событий пользователями. После нескольких дней перелопачивания всевозможных &lt;a href="http://forge.joomla.org/sf/projects/jevents" target="_blank"&gt;JEvents&lt;/a&gt;, &lt;a href="http://www.joomla-addons.org/" target="_blank"&gt;Easy Calendar&lt;/a&gt; и т.п., я натолкнулся на &lt;a href="http://dev.anything-digital.com/" target="_blank"&gt;JCal Pro&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Выглядит замечательно, функционирует нормально, но русского нет в принципе. Пара часов и этот недостаток устранен =)&lt;br /&gt;&lt;br /&gt;Один момент: потребовался небольшой фикс самого JCal Pro. В файле &lt;i&gt;JOOMLA_ROOT/components/com_jcalpro/config.inc.php&lt;/i&gt; есть вызов &lt;code&gt;setlocale(LC_TIME, ...)&lt;/code&gt;. Перед ним нужно добавить &lt;code&gt;setlocale(LC_CTYPE, ...)&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Файл с переводом (надо положить в &lt;i&gt;JOOMLA_ROOT/components/com_jcalpro/languages/russian&lt;/i&gt;): &lt;s&gt;&lt;a href="#"&gt;http://www.snick.ru/jcalpro/russian_v1.5.0.1.zip&lt;/a&gt;&lt;/s&gt;&lt;br /&gt;&lt;br /&gt;Файл с переводом и фиксом (надо положить в &lt;i&gt;JOOMLA_ROOT/components/com_jcalpro&lt;/i&gt;): &lt;s&gt;&lt;a href="#"&gt;http://www.snick.ru/jcalpro/russian_with_fix_v1.5.0.1.zip&lt;/a&gt;&lt;/s&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dev.anything-digital.com/index.php?option=com_smf&amp;amp;Itemid=71&amp;amp;topic=448.0" target="_blank"&gt;Анонс на сайте JCal Pro&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;UPD (en): I've moved files to GoogleCode availale at &lt;a href="http://code.google.com/p/ru-jcalpro"&gt;http://code.google.com/p/ru-jcalpro&lt;/a&gt;. As bonus - pre-encoded Windows-1251 (aka CP1251) and UTF-8 versions.&lt;br /&gt;&lt;br /&gt;UPD (ru): Файлы теперь хостятся у гугла &lt;a href="http://code.google.com/p/ru-jcalpro"&gt;http://code.google.com/p/ru-jcalpro&lt;/a&gt;. В качестве бонуса там две версии - под виндовую CP1251 и универсальную UTF-8 кодировки.&lt;br /&gt;&lt;br /&gt;PS: Спасибо Юре Духничу - я уж думал, что вместе со snick.ru мой перевод канул в лету =)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33088939-4072125721516874936?l=phptunes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SfheY4rHVcbBVPGR6EasNgf-gdU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SfheY4rHVcbBVPGR6EasNgf-gdU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SfheY4rHVcbBVPGR6EasNgf-gdU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SfheY4rHVcbBVPGR6EasNgf-gdU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpTunes/~4/bVE50fSLoyM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phptunes.blogspot.com/feeds/4072125721516874936/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33088939&amp;postID=4072125721516874936" title="Комментарии: 6" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/4072125721516874936?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/4072125721516874936?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/PhpTunes/~3/bVE50fSLoyM/jcal-pro-russian-language.html" title="JCal Pro - Russian language" /><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://photos1.blogger.com/blogger/1828/3628/320/me.jpg" /></author><thr:total>6</thr:total><feedburner:origLink>http://phptunes.blogspot.com/2007/03/jcal-pro-russian-language.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYGR3kzfyp7ImA9WxZREkU.&quot;"><id>tag:blogger.com,1999:blog-33088939.post-116915866383322239</id><published>2007-01-19T00:17:00.000+03:00</published><updated>2008-02-06T11:55:26.787+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-06T11:55:26.787+03:00</app:edited><title>Кириллица и php_json</title><content type="html">Поддержка UTF-8 в PHP весьма слабая, то же касается и кириллицы. Начав использовать javascript-библиотеку &lt;a href="http://prototype.conio.net/" target="_blank"&gt;Prototype&lt;/a&gt; и &lt;a href="http://www.ajax.org/" target="_blank"&gt;AJAX&lt;/a&gt; я столкнулся с тем, что модуль &lt;a href="http://pecl.php.net/package/json" target="_blank"&gt;php_json&lt;/a&gt;, который включен в PHP с версии 5.2.0 (для остальных доступен в виде &lt;a href="http://pecl4win.php.net/ext.php/php_json.dll" target="_blank"&gt;extension&lt;/a&gt;), категорически отказывается воспринимать русский язык. Кириллица просто вырезается.&lt;br /&gt;&lt;br /&gt;Дело в том, что php_json обрабатывает только ISO-8859-1, а остальные символы отбрасывает. Функция &lt;a href="http://php.net/utf8_encode" target="_blank"&gt;&lt;code&gt;utf8_encode()&lt;/code&gt;&lt;/a&gt; тоже не подходит из-за того, что неправильно определяет код символа. Например, русская буква "а" имеет код &lt;code&gt;\u0434&lt;/code&gt;, а &lt;code&gt;utf8_encode()&lt;/code&gt; кодирует ее как &lt;code&gt;\u00e4&lt;/code&gt;. В итоге - на странице кракозябры.&lt;br /&gt;&lt;br /&gt;Положение спасает &lt;a href="http://php.net/iconv" target="_blank"&gt;&lt;code&gt;iconv()&lt;/code&gt;&lt;/a&gt;: &lt;code&gt;iconv('cp1251', 'utf-8', $string)&lt;/code&gt;. Преобразование корректное. Но, к сожалению, это исключает использование функции &lt;a href="http://php.net/json_encode" target="_blank"&gt;&lt;code&gt;json_encode()&lt;/code&gt;&lt;/a&gt; "как есть" - придется написать свою функцию json_safe_encode() для кодирования данных в формат JSON:&lt;pre&gt;function json_safe_encode($var)&lt;br /&gt;{&lt;br /&gt;   return json_encode(json_fix_cyr($var));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function json_fix_cyr($var)&lt;br /&gt;{&lt;br /&gt;   if (is_array($var)) {&lt;br /&gt;       $new = array();&lt;br /&gt;       foreach ($var as $k =&gt; $v) {&lt;br /&gt;           $new[json_fix_cyr($k)] = json_fix_cyr($v);&lt;br /&gt;       }&lt;br /&gt;       $var = $new;&lt;br /&gt;   } elseif (is_object($var)) {&lt;br /&gt;       $vars = get_object_vars($var);&lt;br /&gt;       foreach ($vars as $m =&gt; $v) {&lt;br /&gt;           $var-&gt;$m = json_fix_cyr($v);&lt;br /&gt;       }&lt;br /&gt;   } elseif (is_string($var)) {&lt;br /&gt;       $var = iconv('cp1251', 'utf-8', $var);&lt;br /&gt;   }&lt;br /&gt;   return $var;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size:130%;"&gt;PS.&lt;/span&gt;&lt;br /&gt;На &lt;a href="http://www.json.org/" target="_blank"&gt;www.json.org&lt;/a&gt; масса полезных ссылок.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;UPD 2008-02-06: &lt;code&gt;$vars = get_object_vars($var);&lt;/code&gt; instead of &lt;code&gt;$vars = get_class_vars(get_class($var));&lt;/code&gt;. Thanks to &lt;a href='http://php.net/json_encode' target='_blank'&gt;Pascal Martineau&lt;/a&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33088939-116915866383322239?l=phptunes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z-NxnnKdtfagWwNmcMhWnkl72DA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z-NxnnKdtfagWwNmcMhWnkl72DA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z-NxnnKdtfagWwNmcMhWnkl72DA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z-NxnnKdtfagWwNmcMhWnkl72DA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpTunes/~4/KBCq9l6CCG8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phptunes.blogspot.com/feeds/116915866383322239/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33088939&amp;postID=116915866383322239" title="Комментарии: 15" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/116915866383322239?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/116915866383322239?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/PhpTunes/~3/KBCq9l6CCG8/phpjson.html" title="Кириллица и php_json" /><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://photos1.blogger.com/blogger/1828/3628/320/me.jpg" /></author><thr:total>15</thr:total><feedburner:origLink>http://phptunes.blogspot.com/2007/01/phpjson.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUCSXc4eCp7ImA9WBBaEUg.&quot;"><id>tag:blogger.com,1999:blog-33088939.post-115614620918165587</id><published>2006-08-21T11:42:00.000+04:00</published><updated>2007-01-19T00:04:28.930+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-19T00:04:28.930+03:00</app:edited><title>Работа PHP4 и PHP5 на одном сервере</title><content type="html">PHP-программисту порой требуется иметь на своем компьютере несколько версий PHP. Чаще всего это последние версии PHP4 и PHP5. Полностью переустанавливать PHP неудобно и долго - это замена файлов в системных каталогах, настройка веб-сервера и PHP.&lt;br /&gt;&lt;br /&gt;Я расскажу об одном из способов иметь на Windows XP две версии PHP одновременно. В результате у вас будет рабочий компьютер с Apache 2, PHP4 и PHP5. Если у вас уже установлены веб-сервер Apache и обе версии PHP, то переходите к третьему шагу.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Первый шаг: Установка Apache 2.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Скачайте последнюю версию &lt;a href="http://httpd.apache.org/download.cgi" target="_blank"&gt;Apache 2.0&lt;/a&gt;. На данный момент это версия &lt;a href="http://apache.rediska.ru/httpd/binaries/win32/apache_2.0.59-win32-x86-no_ssl.msi"&gt;2.0.59&lt;/a&gt;. Во время установки в качестве хоста укажите &lt;span style="font-style: italic;"&gt;localhost&lt;/span&gt;, порт &lt;span style="font-style: italic;"&gt;80&lt;/span&gt;, электронный адрес &lt;span style="font-style: italic;"&gt;webmaster@localhost&lt;/span&gt;, место для установки &lt;span style="font-style: italic;"&gt;C:\usr\local\apache2&lt;/span&gt;.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;Программы, которые были портированы с Linux я рекомендую устанавливать в X:\usr\local и придерживаться этого правила. Множество веб-приложений написаны с расчетом на то, что они будут работать под управлением веб-сервера на Linux или FreeBSD. Руководства по установке для таких веб-приложений написаны с учетом отличной от Windows струкруты каталогов. Вам будет проще их настраивать если структруа ваших каталогов будет близка к Linux.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Остальные настройки оставьте по-умолчанию. Убедитесь, что Apache будет установлен как сервис.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Второй шаг: Установка PHP.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.php.net/downloads.php" target="_blank"&gt;Скачайте&lt;/a&gt; PHP4 (на данный момент 4.4.4) и PHP5 (5.2.0) в zip-архивах. Распакуйте файлы в&lt;span style="font-style: italic;"&gt; C:\usr\local\php4&lt;/span&gt; и &lt;span style="font-style: italic;"&gt;C:\usr\local\php5&lt;/span&gt; соответственно. Выполните необходимые действия по настройке PHP, описанные в &lt;span style="font-style: italic;"&gt;install.txt&lt;/span&gt;, глава &lt;span style="font-style: italic;"&gt;Manual Installation Steps&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Третий шаг: Включаем обе версии.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Идея заключается в том, что в конфигурационном файле Apache (&lt;span style="font-style: italic;"&gt;httpd.conf&lt;/span&gt;) можно указать местоположения &lt;span style="font-style: italic;"&gt;php.ini&lt;/span&gt; с помощью директивы &lt;span style="font-style: italic;"&gt;PHPIniDir&lt;/span&gt;, а так же из &lt;span style="font-style: italic;"&gt;httpd.conf&lt;/span&gt; можно загружать другие конфигурационные файлы. Эти два факта позволяют сделать два конфигурационных файла, которые будут отличаться значением LoadModule и PHPIniDir, а остальные директивы (те, которые одинаковы для PHP4 и PHP5) брать из других файлов.&lt;br /&gt;&lt;br /&gt;Так как Apache не может загрузить модули PHP4 и PHP5 одновременно, мы сделаем два разных конфигурационных файла: &lt;span style="font-style: italic;"&gt;httpd-php4.conf&lt;/span&gt; и &lt;span style="font-style: italic;"&gt;httpd-php5.conf&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Переименуйте &lt;span style="font-style: italic;"&gt;httpd.conf&lt;/span&gt; (находится в &lt;span style="font-style: italic;"&gt;C:\usr\local\apache2\conf&lt;/span&gt;) в &lt;span style="font-style: italic;"&gt;httpd-common.conf&lt;/span&gt;. Создайте пустой файл httpd-php4.conf и скопируйте в него:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;## PHP 4 Apache configuration&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# ServerRoot: The top of the directory tree under which the server's&lt;br /&gt;# configuration, error, and log files are kept.&lt;br /&gt;#&lt;br /&gt;ServerRoot "C:\usr\local\apache2"&lt;br /&gt;&lt;br /&gt;# PHP Settings&lt;br /&gt;PHPIniDir "C:\usr\local\php4"&lt;br /&gt;LoadModule php4_module C:\usr\local\php4\php4apache2.dll&lt;br /&gt;AddType application/x-httpd-php .php&lt;br /&gt;AddType application/x-httpd-php-source .phps&lt;br /&gt;&lt;br /&gt;# Load default Apache settings&lt;br /&gt;Include conf/httpd-common.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Обратите внимание, что файл &lt;span style="font-style: italic;"&gt;C:\usr\local\php4\&lt;span style="font-weight: bold;"&gt;sapi&lt;/span&gt;\php4apache2.dll&lt;/span&gt; необходимо скопировать в &lt;span style="font-style: italic;"&gt;C:\usr\local\php4&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;Теперь создайте &lt;span style="font-style: italic;"&gt;httpd-php5.conf&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;## PHP 5 Apache configuration&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# ServerRoot: The top of the directory tree under which the server's&lt;br /&gt;# configuration, error, and log files are kept.&lt;br /&gt;#&lt;br /&gt;ServerRoot "C:\usr\local\apache2"&lt;br /&gt;&lt;br /&gt;# PHP Settings&lt;br /&gt;PHPIniDir "C:\usr\local\php5"&lt;br /&gt;LoadModule php5_module C:\usr\local\php5\php5apache2.dll&lt;br /&gt;AddType application/x-httpd-php .php&lt;br /&gt;AddType application/x-httpd-php-source .phps&lt;br /&gt;&lt;br /&gt;# Load default Apache settings&lt;br /&gt;Include conf/httpd-common.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Закомментируйте в файле httpd-common.conf сроку с директивой ServerRoot:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;...&lt;br /&gt;#&lt;br /&gt;# Do NOT add a slash at the end of the directory path.&lt;br /&gt;#&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;# ServerRoot "D:/usr/local/Apache2"&lt;/span&gt;&lt;br /&gt;...&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Теперь настроим сервисы. Остановите Apache если он запущен. Сначала удалим сервис, который был добавлен во время установки веб-сервера (&lt;span style="font-style: italic;"&gt;Пуск-&gt;Выполнить, наберите cmd, затем нажмите OK&lt;/span&gt;):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;C:\usr\local\apache2\bin\apache.exe -k uninstall&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Установка для PHP4:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;С:\usr\local\apache2\bin\apache.exe -n apache2-php4 -f "C:\usr\local\apache2\conf\httpd-php4.conf" -k install&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Установка для PHP5:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;С:\usr\local\apache2\bin\apache.exe -n apache2-php5 -f "C:\usr\local\apache2\conf\httpd-php5.conf" -k install&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Если возникли ошибки, то обратитесь к &lt;a href="http://httpd.apache.org/docs/2.0/" target="_blank"&gt;документации&lt;/a&gt; Apache или поищите решение в &lt;a href="http://www.google.com" target="_blank"&gt;Google&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Проверим установку. Создайте файл &lt;span style="font-style: italic;"&gt;C:\usr\local\apache2\htdocs\info.php&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;phpinfo();&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Запустите Apache с PHP4:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;net start apache2-php4&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Откройте свой браузер и наберите &lt;span style="font-style: italic;"&gt;http://localhost/info.php&lt;/span&gt;. Вверху сраницы вы увидете текст &lt;span style="font-style: italic;"&gt;PHP Version 4.x.x&lt;/span&gt;. Теперь запустите Apache c PHP5:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;net stop apache2-php4&lt;br /&gt;net start apache2-php5&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Обновите страницу в браузере. Вверху сраницы вы увидете текст &lt;span style="font-style: italic;"&gt;PHP Version 5.x.x&lt;/span&gt;. Вы можете переключаться между версиями вручную либо создать файлы для быстрого переключения.&lt;br /&gt;&lt;br /&gt;start-php4.cmd:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;net stop apache2-php5&lt;br /&gt;net start apache2-php4&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;start-php5.cmd:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;net stop apache2-php4&lt;br /&gt;net start apache2-php5&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Заключение.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;С помощью этого метода можно иметь несколько версий Apache и несколько версий PHP в различных комбинациях. Для того, чтобы PHP4 и PHP5 работали &lt;span style="font-style: italic;"&gt;одновременно&lt;/span&gt;, потребуется сделать копию веб-сервера, например, в C:\usr\local\apache2_another и настройить его на другой IP или порт.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33088939-115614620918165587?l=phptunes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ir_9hUenb8HIVdIwxfRjWt1ZRTA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ir_9hUenb8HIVdIwxfRjWt1ZRTA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ir_9hUenb8HIVdIwxfRjWt1ZRTA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ir_9hUenb8HIVdIwxfRjWt1ZRTA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpTunes/~4/CnYTBxPORoM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://phptunes.blogspot.com/feeds/115614620918165587/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33088939&amp;postID=115614620918165587" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/115614620918165587?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33088939/posts/default/115614620918165587?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/PhpTunes/~3/CnYTBxPORoM/php4-php5.html" title="Работа PHP4 и PHP5 на одном сервере" /><author><name>Snick</name><uri>http://www.blogger.com/profile/02589164989077217519</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://photos1.blogger.com/blogger/1828/3628/320/me.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://phptunes.blogspot.com/2006/08/php4-php5.html</feedburner:origLink></entry></feed>

