<?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>desenvolvimento para web &#187; php</title> <atom:link href="http://desenvolvimentoparaweb.com/categoria/php/feed/" rel="self" type="application/rss+xml" /><link>http://desenvolvimentoparaweb.com</link> <description>desenvolvimento para web trata de jQuery, CSS, usabilidade, performancem, blogs, WordPress, web design e dicas, em geral, para desenvolvimento web</description> <lastBuildDate>Mon, 30 Jan 2012 23:38:52 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /> <item><title>JSON &#8211; JavaScript Object Notation</title><link>http://desenvolvimentoparaweb.com/javascript/json-javascript-object-notation/</link> <comments>http://desenvolvimentoparaweb.com/javascript/json-javascript-object-notation/#comments</comments> <pubDate>Wed, 22 Jun 2011 13:16:57 +0000</pubDate> <dc:creator>Tárcio Zemel</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[php]]></category> <category><![CDATA[Análise]]></category> <category><![CDATA[Conteúdo]]></category> <category><![CDATA[Exemplos]]></category> <guid
isPermaLink="false">http://desenvolvimentoparaweb.com/?p=662</guid> <description><![CDATA[JSON - JavaScript Object Notation - &eacute; uma das principais nota&ccedil;&otilde;es para interc&acirc;mbio de dados entre aplicativos. Saiba mais e veja exemplos e ferramentas.]]></description> <content:encoded><![CDATA[<p
style="text-align: center;"><img
class="aligncenter size-full wp-image-663" src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/08/json-javascript-object-notation.jpg" alt="JSON - JavaScript Object Notation" width="160" height="243" /></p><p>J&aacute; n&atilde;o &eacute; nenhuma novidade no mundo de <a
title="desenvolvimento para web" href="http://desenvolvimentoparaweb.com/">desenvolvimento web</a> o uso e abuso da tecnologia <strong>JSON</strong>. Entretanto, nem todos conhecem este padr&atilde;o de interc&acirc;mbio facilitado de dados entre aplica&ccedil;&otilde;es. N&atilde;o &eacute; obrigat&oacute;rio, mas saber JSON pode ser bastante &uacute;til em projetos um pouco mais sofisticados e/ou que necessitam de uma demanda/pol&iacute;tica de transfer&ecirc;ncia de dados mais simples, leve e eficiente.</p><p>Usar JSON proporciona in&uacute;meras vantagens ao desenvolvedor web. Desde a simplicidade em tratar os dados &agrave; maneira f&aacute;cil como &eacute; poss&iacute;vel integrar tecnologias <em>client-side</em> com <em>server-side</em>, o JSON certamente &eacute; bastante recomendado.</p><h2>O que &eacute; e para que serve JSON</h2><p>JSON &eacute; o acr&ocirc;nimo para &#8220;<strong>JavaScript  Object  Notation</strong>&#8220;. Como &eacute; poss&iacute;vel notar pelo nome, originalmente o JSON foi concebido para se trabalhar com javascript, mas, j&aacute; adiantando, n&atilde;o &eacute; necessariamente obrigat&oacute;rio o uso de javascript para seu uso, dado que, atualmente, &eacute; poss&iacute;vel utilizar JSON com mais de 20 linguagens de programa&ccedil;&atilde;o diferentes.</p><p>Uma defini&ccedil;&atilde;o interessante &eacute; a do Wiki&eacute;dia:</p><blockquote><p>JSON (com a pronuncia djeis&oacute;n), um acr&ocirc;nimo para &#8220;JavaScript  Object  Notation&#8221;, &eacute; um formato leve para interc&acirc;mbio de dados computacionais. JSON &eacute; um subconjunto da nota&ccedil;&atilde;o de objeto de JavaScript, mas seu uso n&atilde;o requer javascript, exclusivamente.</p><p>O formato JSON foi originalmente criado por Douglas Crockford e &eacute; descrito no <a
href="http://tools.ietf.org/html/rfc4627">RFC 4627</a>. O media-type oficial do JSON &eacute;<em> application/json</em> e a extens&atilde;o &eacute; <em>.json</em>.</p></blockquote><p>Mas uma defini&ccedil;&atilde;o que explica, de forma bem mais simples e objetiva, &eacute; a de <a
href="http://blog.thiagobelem.net/">Tiago Belem</a>, em seu artigo &#8220;<a
href="http://blog.thiagobelem.net/php/introducao-a-json-e-php-webservices/">Introdu&ccedil;&atilde;o a JSON e PHP</a>&#8220;, no qual consta que</p><blockquote><p>JSON &eacute; um padr&atilde;o de formata&ccedil;&atilde;o de dados que ser&atilde;o transmitidos entre duas aplica&ccedil;&otilde;es de linguagens diferentes.</p></blockquote><p>Quer dizer, JSON &eacute; usado, principalmente, para <strong>permitir a troca de dados entre linguagens</strong>. Mas n&atilde;o s&oacute; isso, ele tamb&eacute;m &eacute; &oacute;timo para lidar com <em>webservices</em> e tem muitos outros usos.</p><h2>Vantagens em se usar JSON</h2><p>A descri&ccedil;&atilde;o de dados em JSON &eacute; bem f&aacute;cil, n&atilde;o passando de um documento de texto puro disposto em um padr&atilde;o simples. Conforme foi explicado, JSON &eacute; excelente para interc&acirc;mbio de informa&ccedil;&otilde;es entre aplicativos.</p><p>Mas tamb&eacute;m existem outras maneiras de se fazer isso, por exemplo, com <strong>XML</strong>. Entretanto, o JSON apresenta vantagens bastante interessantes, o que, ap&oacute;s uma an&aacute;lise do caso de seu aplicativo ou sistema web, pode lev&aacute;-lo a optar por ele. Algumas das vantagens s&atilde;o:</p><ul><li>Sintaxe simples, de f&aacute;cil aprendizado e implementa&ccedil;&atilde;o;</li><li>Tamanho do arquivo bem menor em rela&ccedil;&atilde;o a outras &#8220;linguagens intermedi&aacute;rias&#8221;, tais como XML;</li><li>Facilidade de desenvolvimento e alto desempenho nas aplica&ccedil;&otilde;es que o utilizam.</li></ul><h2>Estruturas JSON</h2><p>&Eacute; poss&iacute;vel ver alguns diagramas das estruturas no pr&oacute;prio <a
href="http://www.json.org/">site oficial do JSON</a>; basicamente, &eacute; o seguinte:</p><p><img
src="http://desenvolvimentoparaweb.com/wp-content/uploads/2011/06/json-estruturas-objeto-array-valor.gif" alt="JSON: estruturas" title="" width="500" height="440" class="aligncenter size-full wp-image-708" /></p><p>Vamos ver, ent&atilde;o, como podemos descrever dados simples usando o que a sintaxe que ele nos oferece.</p><h3>Arrays</h3><p>Por exemplo, vamos ver como seria um array dos dias da semana:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;Domingo&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Segunda&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Terça&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Quarta&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Quinta&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Sexta&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Sábado&quot;</span><span style="color: #009900;">&#93;</span></pre></div></div><p>Perceba que strings devem ser indicadas com aspas duplas.</p><p>Elementos separados por v&iacute;rgulas entre colchetes &eacute; a nota&ccedil;&atilde;o JSON para um array (naturalmente, a v&iacute;rgula delimita cada item). A maioria dos desenvolvedores prefere identar um pouco o c&oacute;digo para facilitar a leitura:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#91;</span>
	<span style="color: #3366CC;">&quot;Domingo&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Segunda&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Terça&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Quarta&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Quinta&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Sexta&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Sábado&quot;</span>
<span style="color: #009900;">&#93;</span></pre></div></div><p>&Eacute; poss&iacute;vel, tamb&eacute;m, misturar diversos tipos de dados em um s&oacute; array:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#91;</span>
	<span style="color: #CC0000;">33</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Segunda&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #003366; font-weight: bold;">TRUE</span><span style="color: #339933;">,</span>
	<span style="color: #CC0000;">3.14159265</span><span style="color: #339933;">,</span>
        <span style="color: #003366; font-weight: bold;">NULL</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;ma&amp;ccedil;&amp;atilde;&quot;</span>
<span style="color: #009900;">&#93;</span></pre></div></div><h3>Objetos</h3><p>Como vimos, arrays s&atilde;o representados por colcechetes. No caso de objetos, estes s&atilde;o representados por chaves; cada chave &eacute; identificada por uma string e, depois de um dois-pontos, os valores de cada item especificados. Fica mais claro com um exemplo:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>
	<span style="color: #3366CC;">&quot;Domingo&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Folga&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Segunda&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Viagem&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Terça&quot;</span>   <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Pagamentos&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Quarta&quot;</span>  <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Piscina&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Quinta&quot;</span>  <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Churrasco&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Sexta&quot;</span>   <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Carteado&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;Sábado&quot;</span>  <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Festa&quot;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><p>Perceba que n&atilde;o tem import&acirc;ncia haver espa&ccedil;os a mais ou a menos entre a descri&ccedil;&atilde;o da chave, o separador &#8220;:&#8221; e o valor desta. Tudo ser&aacute; interpretado corretamente.</p><h3>Alguns exemplos</h3><p>&Eacute; bastante simples descrever JSON, voc&ecirc; viu. Como os objetos de qualquer outra linguagem de programa&ccedil;&atilde;o, &eacute; poss&iacute;vel armazenar quaisquer tipos de dados e quantos dados se desejar. Veja este exemplo:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>
    <span style="color: #3366CC;">&quot;Marconildo&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.marconildo.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">34</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Joanorta&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.joanorta.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">22</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Estripafurgia&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.estripafurgia.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">47</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><p>Perceba que, neste caso, cada objeto possui, &#8220;url&#8221; e &#8220;idade&#8221; (provavelmente este n&atilde;o seria um exemplo &#8220;da vida real&#8221;, mas d&aacute; para ilustrar bem o conceito), mas, n&atilde;o necessariamente, todos devem possuir o mesmo n&uacute;mero de propriedades. Poderia haver um ou mais elementos com &#8220;url&#8221;, &#8220;idade&#8221;, &#8220;altura&#8221;, &#8220;endereco&#8221;, etc. &Eacute; poss&iacute;vel, inclusive, a utiliza&ccedil;&atilde;o de arrays:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>
    <span style="color: #3366CC;">&quot;Marconildo&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.marconildo.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">34</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Joanorta&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.joanorta.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">22</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Estripafurgia&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.estripafurgia.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">47</span><span style="color: #339933;">,</span>
    	<span style="color: #3366CC;">&quot;diasDeTrabalho&quot;</span><span style="color: #339933;">:</span>
	 <span style="color: #009900;">&#91;</span>
	     <span style="color: #3366CC;">&quot;Segunda&quot;</span><span style="color: #339933;">,</span>
	     <span style="color: #3366CC;">&quot;Quarta&quot;</span><span style="color: #339933;">,</span>
	     <span style="color: #3366CC;">&quot;Sexta&quot;</span>
	 <span style="color: #009900;">&#93;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><p>E, at&eacute;, um array de objetos!</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>
    <span style="color: #3366CC;">&quot;Marconildo&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.marconildo.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">34</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Joanorta&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.joanorta.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">22</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">&quot;Estripafurgia&quot;</span><span style="color: #339933;">:</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.estripafurgia.com.br/&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">47</span><span style="color: #339933;">,</span>
    	<span style="color: #3366CC;">&quot;dependentes&quot;</span><span style="color: #339933;">:</span>
    	<span style="color: #009900;">&#91;</span>
    	    <span style="color: #3366CC;">&quot;Astolfinho&quot;</span><span style="color: #339933;">:</span>
	    <span style="color: #009900;">&#123;</span>
	        <span style="color: #3366CC;">&quot;sexo&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;m&quot;</span><span style="color: #339933;">,</span>
	        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">16</span>
	    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    	    <span style="color: #3366CC;">&quot;Mariazinha&quot;</span><span style="color: #339933;">:</span>
	    <span style="color: #009900;">&#123;</span>
	        <span style="color: #3366CC;">&quot;sexo&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;f&quot;</span><span style="color: #339933;">,</span>
	        <span style="color: #3366CC;">&quot;idade&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">10</span>
	    <span style="color: #009900;">&#125;</span>
    	<span style="color: #009900;">&#93;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><h2>JSON e javascript</h2><p>Agora voc&ecirc; j&aacute; aprendeu as nota&ccedil;&otilde;es b&aacute;sicas do JSON, mas o que fazer com isso, como usar, efetivamente, o poder do JSON nas aplica&ccedil;&otilde;es do dia-a-dia usando javascript? Veja um exemplo simples:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> funcionarios <span style="color: #339933;">=</span> <span style="color: #3366CC;">'
	{
	    &quot;Marconildo&quot;:
	    {
	        &quot;url&quot;: &quot;http://www.marconildo.com.br/&quot;,
	        &quot;idade&quot;: 34
	    },
	    &quot;Joanorta&quot;:
	    {
	        &quot;url&quot;: &quot;http://www.joanorta.com.br/&quot;,
	        &quot;idade&quot;: 22
	    },
	    &quot;Estripafurgia&quot;:
	    {
	        &quot;url&quot;: &quot;http://www.estripafurgia.com.br/&quot;,
	        &quot;idade&quot;: 47
	    }
	}
'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> funcionario <span style="color: #339933;">=</span> JSON.<span style="color: #660066;">parse</span><span style="color: #009900;">&#40;</span>funcionarios<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>funcionario.<span style="color: #660066;">Marconildo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>funcionario.<span style="color: #660066;">Marconildo</span>.<span style="color: #660066;">idade</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>Foi criada a vari&aacute;vel &#8220;funcionarios&#8221; e colocado uma string JSON nela. Usando a fun&ccedil;&atilde;o <a
rel="nofollow" href="http://msdn.microsoft.com/en-us/library/cc836466(v=vs.94).aspx">JSON.parse</a>, convertemos a string para, efetivamente, JSON na vari&aacute;vel &#8220;funcionario&#8221;e, a partir da&iacute;, foi poss&iacute;vel acessar todas suas propriedades com a nota&ccedil;&atilde;o padr&atilde;o de OO.</p><p>Esse foi um exemplo ilustrativo. Em aplica&ccedil;&otilde;es &#8220;de verdade&#8221;, seria bastante eficiente, por exemplo, realizar requisi&ccedil;&otilde;es em AJAX para procurar retornos em JSON e, a partir da&iacute;, realizar quaisquer tipos de opera&ccedil;&atilde;o com o <em>data</em> retornado. Trataremos disso em artigos futuros. <a
href="http://desenvolvimentoparaweb.com/feed">Assine o feed</a> para conferir.</p><h3>$.getJSON</h3><p>O jQuery possui uma poderosa ferramenta para trabalharmos com JSON, &eacute; a fun&ccedil;&atilde;o <a
href="http://api.jquery.com/jQuery.getJSON/">$.getJSON</a>, que serve para carregar dados no formato JSON usando requisi&ccedil;&atilde;o HTTP <strong>GET</strong>. Na verdade, esta fun&ccedil;&atilde;o &eacute; somente uma esp&eacute;cie de atalho para <a
href="http://api.jquery.com/jQuery.ajax/">$.ajax()</a> usando &#8220;json&#8221; no dataType, mas us&aacute;-la num contexto JSON fica bastante coerente.</p><p>N&atilde;o h&aacute; mist&eacute;rio algum para usar, ele segue a mesma &#8220;linha&#8221; do $.ajax(), como podemos encontrar neste exemplo disponibilizado no pr&oacute;prio site do jQuery:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;">$.<span style="color: #660066;">getJSON</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'ajax/test.json'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> items <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
  $.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span>data<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>key<span style="color: #339933;">,</span> val<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    items.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;li id=&quot;'</span> <span style="color: #339933;">+</span> key <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&quot;&gt;'</span> <span style="color: #339933;">+</span> val <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/li&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;ul/&gt;'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #3366CC;">'class'</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'my-new-list'</span><span style="color: #339933;">,</span>
    html<span style="color: #339933;">:</span> items.<span style="color: #660066;">join</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">appendTo</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'body'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>E, <a
href="http://onwebdev.blogspot.com/2011/08/jquery-testing-remote-json-data-with.html">como nos mostra Gabriele Romanato</a>, &eacute; poss&iacute;vel verificar se o resultado da requisi&ccedil;&atilde;o &eacute; realmente um objeto JSON de maneira simples:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;">$.<span style="color: #660066;">getJSON</span><span style="color: #009900;">&#40;</span>url<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span> data <span style="color: #339933;">!==</span> <span style="color: #3366CC;">'object'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Erro!</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>Dessa maneira, &eacute; poss&iacute;vel economizar bastante tempo ao procurar erros e a estrutura de c&oacute;digo fica mais profissional e mais facilmente manuten&iacute;vel.</p><h2>JSON e PHP</h2><p>O PHP tamb&eacute;m possui algumas <a
href="http://www.php.net/manual/en/ref.json.php">fun&ccedil;&otilde;es para se trabalhar com JSON</a>. Vamos a um exemplo simples de como gerar PHP a partir de JSON:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$funcionarios</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'
	{
	    &quot;Marconildo&quot;:
	    {
	        &quot;url&quot;: &quot;http://www.marconildo.com.br/&quot;,
	        &quot;idade&quot;: 34
	    },
	    &quot;Joanorta&quot;:
	    {
	        &quot;url&quot;: &quot;http://www.joanorta.com.br/&quot;,
	        &quot;idade&quot;: 22
	    },
	    &quot;Estripafurgia&quot;:
	    {
	        &quot;url&quot;: &quot;http://www.estripafurgia.com.br/&quot;,
	        &quot;idade&quot;: 47
	    }
	}
'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$funcionario</span> <span style="color: #339933;">=</span> <span style="color: #990000;">json_decode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$funcionarios</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$funcionario</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Marconildo</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&lt;br /&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$funcionario</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Marconildo</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">idade</span><span style="color: #339933;">;</span></pre></div></div><p>Bem simples, bem direto, dispensa explica&ccedil;&otilde;es. Agora, se voc&ecirc; preferir tratar o JSON como se fosse array, basta inserir um segundo par&acirc;metro &agrave; fun&ccedil;&atilde;o, dessa maneira:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$funcionario</span> <span style="color: #339933;">=</span> <span style="color: #990000;">json_decode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$funcionarios</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><h2>Ferramentas JSON</h2><p>JSON &eacute; bastante simples e intuitivo para qualquer programador, mas, para quem est&aacute; come&ccedil;ando a mexer agora e/ou para os que precisam de algumas <strong>ferramentas para JSON</strong>, segue o link de alguns parser, validadores e ferramentas, em geral, para se trabalhar com JSON:</p><ul><li><a
href="http://json.parser.online.fr/">Json Parser Online</a></li><li><a
href="http://jsonlint.com/">JSONLint &#8211; The JSON Validator</a></li><li><a
href="http://jsonviewer.stack.hu/">Online JSON Viewer</a></li><li><a
href="http://www.jollydroll.com/tools/json">Convert JSON Strings to a Friendly Readable Format</a></li></ul><h2>Conclus&atilde;o sobre JSON</h2><p>Uma das principais funcionalidades do JSON &eacute; o <strong>interc&acirc;mbio de dados entre aplicativos e linguagens diferentes</strong>. Sua sintaxe simples, sua leveza e objetividade, aliados ao suporte por dezenas de linguagens de progrma&ccedil;&atilde;o o tornam uma excelente alternativa quando a necessidade &eacute; esta. O fato de milhares de <em>webservices</em> de qualidade usarem JSON deve ser um bom indicativo de que us&aacute;-lo &eacute; uma boa escolha.</p><p>Usando as ferramentas apresentas, &eacute; poss&iacute;vel validar seu JSON, test&aacute;-lo, verificar se est&aacute; produzindo uma hierarquia correta, enfim, aperfei&ccedil;oar e refinar o c&oacute;digo para que atinja o m&aacute;ximo poss&iacute;vel de desempenho. Ao se trabalhar com JSON, logo se percebe seu poder e simplicidade, o que agiliza bastante o processo de programa&ccedil;&atilde;o, ao mesmo tempo em que o formato n&atilde;o se torna um empecilho &agrave; produtividade; pelo contr&aacute;rio, a aprimora!</p><p>Por essas e outras a nota&ccedil;&atilde;o <strong>JavaScript Object Notation</strong>, mais conhecida como <strong>JSON</strong>, &eacute; altamente recomendada para desenvolvimento web!</p><h3  class="related_post_title">Artigos Relacionados</h3><ul
class="related_post"><li><a
href="http://desenvolvimentoparaweb.com/seo/erros-comuns-desenvolvimento-web-campanhas-seo/" title="Erros comuns em desenvolvimento web para campanhas de SEO">Erros comuns em desenvolvimento web para campanhas de SEO</a></li><li><a
href="http://desenvolvimentoparaweb.com/usabilidade/breadcrumbs-guia-completo-exemplos-melhores-praticas/" title="Breadcrumbs: guia completo com exemplos e melhores práticas">Breadcrumbs: guia completo com exemplos e melhores práticas</a></li><li><a
href="http://desenvolvimentoparaweb.com/miscelanea/perguntas-cliente-antes-depois-projeto/" title="Perguntas ao cliente para antes e depois de um projeto">Perguntas ao cliente para antes e depois de um projeto</a></li><li><a
href="http://desenvolvimentoparaweb.com/seo/6-mitos-seo-voce-deve-evitar/" title="6 mitos de SEO que você deve evitar">6 mitos de SEO que você deve evitar</a></li><li><a
href="http://desenvolvimentoparaweb.com/midia-social/mastering-twitter-o-manual-completo-sobre-twitter-para-desenvolvedores-e-marketeiros/" title="Mastering Twitter, o manual completo sobre twitter para desenvolvedores e marketeiros">Mastering Twitter, o manual completo sobre twitter para desenvolvedores e marketeiros</a></li><li><a
href="http://desenvolvimentoparaweb.com/usabilidade/8-caracteristicas-de-user-interfaces-ui-de-sucesso/" title="8 características de User Interfaces (UI) de sucesso">8 características de User Interfaces (UI) de sucesso</a></li><li><a
href="http://desenvolvimentoparaweb.com/jquery/como-criar-sumarios-dinamicamente-com-o-toc-table-of-contents-jquery-plugin-jquerytoc/" title="Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin">Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin</a></li><li><a
href="http://desenvolvimentoparaweb.com/usabilidade/web-sites-e-comunicacao-21-maneiras-de-os-sites-se-comunicarem-com-seus-visitantes/" title="Web sites e comunicação: 21 maneiras de os sites se comunicarem com seus visitantes">Web sites e comunicação: 21 maneiras de os sites se comunicarem com seus visitantes</a></li><li><a
href="http://desenvolvimentoparaweb.com/xhtml/meta-tags/" title="Meta tags">Meta tags</a></li><li><a
href="http://desenvolvimentoparaweb.com/blogs/maneiras-praticas-para-melhorar-a-visitacao-de-seu-blog-e-fidelizar-seus-leitores/" title="Maneiras práticas para melhorar a visitação de seu blog e fidelizar seus leitores">Maneiras práticas para melhorar a visitação de seu blog e fidelizar seus leitores</a></li></ul>]]></content:encoded> <wfw:commentRss>http://desenvolvimentoparaweb.com/javascript/json-javascript-object-notation/feed/</wfw:commentRss> <slash:comments>11</slash:comments> </item> <item><title>URLs amig&#225;veis (slug) &#224; WordPress</title><link>http://desenvolvimentoparaweb.com/php/urls-amigaveis-slug-a-wordpress/</link> <comments>http://desenvolvimentoparaweb.com/php/urls-amigaveis-slug-a-wordpress/#comments</comments> <pubDate>Mon, 12 Jul 2010 14:40:36 +0000</pubDate> <dc:creator>Tárcio Zemel</dc:creator> <category><![CDATA[php]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[Conteúdo]]></category> <category><![CDATA[Otimização]]></category> <guid
isPermaLink="false">http://desenvolvimentoparaweb.com/?p=652</guid> <description><![CDATA[Apenda a gerar URLs amig&aacute;veis como &eacute; feito no WordPress e implemente em seu sistema PHP]]></description> <content:encoded><![CDATA[<p><img
src="http://desenvolvimentoparaweb.com/wp-content/uploads/2010/07/urls-amigaveis-slug-wordpress.jpg" alt="URLs amig&aacute;veis (slug) WordPress" title="" width="300" height="300" class="aligncenter size-full wp-image-653" /></p><p>O <strong>desenvolvimento web em WordPress</strong> &eacute; excelente! O CMS j&aacute; vem com diversas fun&ccedil;&otilde;es e funcionalidades para facilitar a vida de desenvolvedores e, at&eacute; mesmo, de pessoas que n&atilde;o tem o m&iacute;nimo conhecimento em programa&ccedil;&atilde;o (um dos objetivos &eacute; esse, mesmo).</p><p>Mas muitos desenvolvedores, principalmente os ainda incipientes, esquecem que o WordPress nada mais &eacute; do que <strong>PHP</strong>! Claro, o WP &eacute; nada mais, nada menos, que um sistema feito em PHP, como voc&ecirc; e eu poder&iacute;amos ter feito. Mas, por motivos que me fogem ao conhecimento, as pessoas esquecem isso&#8230; Talvez o n&iacute;vel de abstra&ccedil;&atilde;o em programa&ccedil;&atilde;o que o CMS proporcione seja o &#8220;culpado&#8221;, mas, sinceramente, n&atilde;o tenho certeza.</p><p>Ent&atilde;o, se voc&ecirc; tiver a curiosidade de vasculhar os arquivos PHP que fazem do WordPress o que ele &eacute;, vai ter uma grata surpresa e encontrar uma rica fonte de scripts, fun&ccedil;&otilde;es e funcionalidades que voc&ecirc; sempre quis implementar e n&atilde;o sabia como!  :-D</p><h2>URLs amig&aacute;ves &agrave; WordPress</h2><p>Por exemplo, muitos querem implementar uma estrutura de URLs amig&aacute;ves (gerar os famosos &#8220;slugs&#8221;) em sistemas desenvolvidos do zero  &#8211; seja atrav&eacute;s de frameworks ou em PHPU (&#8220;PHP Unha&#8221;) -, mas n&atilde;o sabem como. Ora, se sabemos que o WordPress possui um &oacute;timo sistema de gera&ccedil;&atilde;o de slugs e temos acesso a seu c&oacute;digo-fonte, tudo o que &eacute; preciso &eacute; vasculhar o c&oacute;digo-fonte e encontrar as fun&ccedil;&otilde;es certas.</p><p>Seguindo o exemplo de <strong>gerar slugs</strong>, procurando um pouco, &eacute; poss&iacute;vel saber que as fun&ccedil;&otilde;es necess&aacute;rias se encontram em <strong>/wp-includes/formatting.php</strong>. E, como era de se esperar, as fun&ccedil;&otilde;es est&atilde;o devidamente documentadas com seu escopo, par&acirc;metros e retorno. Precisa de mais?</p><p>Para gerar URLs amig&aacute;veis &agrave; WordPress, s&atilde;o necess&aacute;rias 4 fun&ccedil;&otilde;es. 3 &#8220;preliminares&#8221; que s&atilde;o:</p><p><iframe
src="http://pastebin.com/embed_iframe.php?i=qyxBjkTs" style="border:none;width:100%;height:300px;"></iframe></p><p><iframe
src="http://pastebin.com/embed_iframe.php?i=veqTMpYX" style="border:none;width:100%;height:300px;"></iframe></p><p><iframe
src="http://pastebin.com/embed_iframe.php?i=WpCkCLJF" style="border:none;width:100%;height:300px;"></iframe></p><p>E, com essas fun&ccedil;&otilde;es devidamente estabelecidas, a fun&ccedil;&atilde;o que gera os slugs, propriamente dita:</p><p><iframe
src="http://pastebin.com/embed_iframe.php?i=PDMZqzN8" style="border:none;width:100%;height:300px;"></iframe></p><p>Ent&atilde;o, para gerar um slug em seu pr&oacute;prio sistema depois de implementar as fun&ccedil;&otilde;es mostradas, basta escrever:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
</pre></td><td
class="code"><pre class="php" style="font-family:monospace;">sanitize_title_with_dashes<span style="color: #009900;">&#40;</span><span style="color: #000088;">$var</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p>Achou o nome da fun&ccedil;&atilde;o grande ou feio? Voc&ecirc; tem o c&oacute;digo, altere como bem entender!</p><h2>Considera&ccedil;&otilde;es finais</h2><p>O WordPress &eacute; <strong>software livre</strong> (registrado sob a licen&ccedil;a <a
href="http://pt.wikipedia.org/wiki/GNU_General_Public_License">GPL</a>), ent&atilde;o voc&ecirc; pode pegar essas 4 fun&ccedil;&otilde;es e implementar em seu site/sistema/softwares sem o medo de receber uma cartinha do advogado da equipe WordPress amanh&atilde; ou depois.</p><p>Fica uma pergunta: voc&ecirc; tem um software livre &agrave; disposi&ccedil;&atilde;o e fica quebrando a cabe&ccedil;a em busca de solu&ccedil;&otilde;es de c&oacute;digo que j&aacute; existem e est&atilde;o implementadas nele? Vasculhe todo o c&oacute;digo fonte (veja alguns recursos que ajudam no artigo sobre <a
href="/indicacoes/ferramentas-e-recursos-para-desenvolvimento-web/">ferramentas e recursos para desenvolvimento web</a>) e procure por aquilo que vai lhe ser &uacute;til!</p><p>N&atilde;o seja t&iacute;mido!  ;-)</p><h3  class="related_post_title">Artigos Relacionados</h3><ul
class="related_post"><li><a
href="http://desenvolvimentoparaweb.com/wordpress/15-comandos-sql-wordpress/" title="15 fantásticos comandos SQL para WordPress">15 fantásticos comandos SQL para WordPress</a></li><li><a
href="http://desenvolvimentoparaweb.com/seo/6-mitos-seo-voce-deve-evitar/" title="6 mitos de SEO que você deve evitar">6 mitos de SEO que você deve evitar</a></li><li><a
href="http://desenvolvimentoparaweb.com/miscelanea/estrategia-de-conteudo-content-strategy/" title="Estratégia de Conteúdo ou Content Strategy">Estratégia de Conteúdo ou Content Strategy</a></li><li><a
href="http://desenvolvimentoparaweb.com/jquery/otimizar-codigos-jquery-aumentar-performance-front-end/" title="Como otimizar códigos jQuery e aumentar a performance do front-end">Como otimizar códigos jQuery e aumentar a performance do front-end</a></li><li><a
href="http://desenvolvimentoparaweb.com/javascript/json-javascript-object-notation/" title="JSON &#8211; JavaScript Object Notation">JSON &#8211; JavaScript Object Notation</a></li><li><a
href="http://desenvolvimentoparaweb.com/wordpress/5-dicas-para-temas-wordpress-melhores/" title="5 dicas para temas WordPress melhores">5 dicas para temas WordPress melhores</a></li><li><a
href="http://desenvolvimentoparaweb.com/css/urls-longas-apresentadas-corretamente-com-css/" title="URLs longas apresentadas corretamente com CSS">URLs longas apresentadas corretamente com CSS</a></li><li><a
href="http://desenvolvimentoparaweb.com/seo/erros-comuns-desenvolvimento-web-campanhas-seo/" title="Erros comuns em desenvolvimento web para campanhas de SEO">Erros comuns em desenvolvimento web para campanhas de SEO</a></li><li><a
href="http://desenvolvimentoparaweb.com/jquery/melhorando-interacao-formularios-busca/" title="Melhorando a interação em formulários de busca">Melhorando a interação em formulários de busca</a></li><li><a
href="http://desenvolvimentoparaweb.com/xhtml/textarea-dicas-truques-textarea/" title="Textarea: dicas e truques que você sempre quis saber">Textarea: dicas e truques que você sempre quis saber</a></li></ul>]]></content:encoded> <wfw:commentRss>http://desenvolvimentoparaweb.com/php/urls-amigaveis-slug-a-wordpress/feed/</wfw:commentRss> <slash:comments>18</slash:comments> </item> <item><title>Dicas para otimizar c&#243;digos PHP</title><link>http://desenvolvimentoparaweb.com/php/dicas-para-otimizar-codigos-php/</link> <comments>http://desenvolvimentoparaweb.com/php/dicas-para-otimizar-codigos-php/#comments</comments> <pubDate>Wed, 13 Aug 2008 18:43:43 +0000</pubDate> <dc:creator>Tárcio Zemel</dc:creator> <category><![CDATA[php]]></category> <category><![CDATA[Desempenho]]></category> <category><![CDATA[Otimização]]></category> <category><![CDATA[Performance]]></category> <guid
isPermaLink="false">http://www.desenvolvimentoparaweb.com/?p=298</guid> <description><![CDATA[Fazer programa&ccedil;&atilde;o em PHP &eacute; f&aacute;cil; fazer uma boa programa&ccedil;&atilde;o exige um pouco mais de conhecimento. Saiba de dicas r&aacute;pidas e f&aacute;ceis para aumentar a performance de seus c&oacute;digos!]]></description> <content:encoded><![CDATA[<p>Toda as linguagens de programa&ccedil;&atilde;o modernas foram idealizadas e s&atilde;o feitas de modo a permitir fazer a mesma tarefa de in&uacute;meras maneiras diferentes. Esse &#8220;todos caminhos levam a Roma&#8221; da programa&ccedil;&atilde;o moderna &eacute; bastante &uacute;til, j&aacute; que o desenvolvedor tem a oportunidade de escolher por quais jeitos vai guiar sua programa&ccedil;&atilde;o e quais caminhos seguir&aacute; para implementar seus projetos. Com o PHP n&atilde;o poderia ser diferente: ao programar com PHP, al&eacute;m de ser bem tranquilo, &eacute; poss&iacute;vel implementar diversas solu&ccedil;&otilde;es de diversas maneiras diferentes.</p><p>Mas esta liberdade toda, se mal utilizada, <strong>pode prejudicar a performance e qualidade de um projeto</strong>. Atrav&eacute;s de m&aacute;s pr&aacute;ticas de programa&ccedil;&atilde;o PHP algu&eacute;m pode fazer o desempenho de um sistema inteiro ficar aqu&eacute;m de suas potencialidades, caso este tivesse sido programado de maneira &#8220;adequada&#8221;. Existem algumas pequenas dicas que s&atilde;o f&aacute;ceis de seguir &#8211; n&atilde;o interferem em nada a l&oacute;gica do programa e <em>modus operandi</em> do progamador PHP &#8211; e surtem bons resultados, rumo &agrave; <strong>otimiza&ccedil;&atilde;o</strong> e <strong>ganho de desempenho e performance</strong> de seus <em>scripts</em>.</p><h2>Otimiza&ccedil;&atilde;o de sa&iacute;da de dados</h2><p>O PHP permite o processamento <em>server side</em> das solitica&ccedil;&otilde;es feitas no lado do cliente. &Eacute; muito importante, ent&atilde;o, uma <strong>boa performance</strong> ao exibir o resultado deste processamento feito no lado do servidor, j&aacute; que o <em>front-end</em> de uma aplica&ccedil;&atilde;o ou sistema deve ser f&aacute;cil de usar e r&aacute;pido ao responder requisi&ccedil;&otilde;es.</p><h3>Use &#8220;echo&#8221; ao inv&eacute;s de &#8220;print&#8221;</h3><p>Dentre as duas fun&ccedil;&otilde;es que permitem a exibi&ccedil;&atilde;o de informa&ccedil;&otilde;es &#8211; o &#8220;tal&#8221; processamento <em>server-side</em> -, as fun&ccedil;&otilde;es <a
title="Sobre a fun&ccedil;&atilde;o echo, no manual oficial PHP." href="http://br2.php.net/echo">echo</a> e <a
title="Sobre a fun&ccedil;&atilde;o print, no manual oficial PHP." href="http://br2.php.net/print">print</a> s&atilde;o as mais conhecidas. Entretanto, usar a fun&ccedil;&atilde;o <strong>echo</strong> &eacute; melhor, j&aacute; que, apesar de ambas servirem e realizarem a mesma coisa &#8211; exibir sa&iacute;das e informa&ccedil;&otilde;es &#8211; o desempenho de echo &eacute; melhor.</p><p>Portanto, prefira utilizar <strong>echo()</strong>!</p><h3>Aspas simples e aspas duplas</h3><p>Para exibir em tela o conte&uacute;do de uma vari&aacute;vel, &eacute; poss&iacute;vel utiliza as duplas (&#8220;) e escrever a vari&aacute;vel juntamente com o restante da exibi&ccedil;&atilde;o; ou utilizar aspas simples (&#8216;) e concatenar as vari&aacute;veis (.) com o restante da sa&iacute;da, de certa forma &#8220;isolando&#8221; as vari&aacute;veis do restante da exibi&ccedil;&atilde;o em tela.</p><p>&Eacute; melhor usar aspas simples com &#8220;isolamento&#8221; das vari&aacute;veis ao inv&eacute;s de aspas duplas com as vari&aacute;veis juntamente ao restante do conte&uacute;do. Portanto, prefira usar:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// maneira menos eficiente</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Esta é uma maneira menos eficiente de exibir uma <span style="color: #006699; font-weight: bold;">$var</span>!&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// maneira mais eficiente</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Esta é uma maneira mais eficiente de exibir uma '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$var</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'!'</span><span style="color: #339933;">;</span></pre></div></div><p>E h&aacute; ainda uma maneira ainda r&aacute;pida e com melhor performance no PHP. Apesar de ser um pouco estranha esta sintaxe &#8211; pelo menos para mim -, os resultados em passar m&uacute;ltiplos par&acirc;metros &agrave; fun&ccedil;&atilde;o ao inv&eacute;s de realizar concatena&ccedil;&atilde;o s&atilde;o mais satisfat&oacute;rios:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// maneira muito eficiente (com sintaxe estranha...)</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Maneira muito mais eficiente de exibir uma'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$var</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'!'</span><span style="color: #339933;">;</span></pre></div></div><h2>Otimiza&ccedil;&atilde;o de loops</h2><p>N&atilde;o h&aacute; que se falar em fazer um <em>web site</em> ou sistema em PHP sem falar em <strong>loops</strong>. E j&aacute; que s&atilde;o t&atilde;o utilizados &#8211; justamente por serem t&atilde;o indispens&aacute;veis -, &eacute; mais do que importante fazer <em>loops</em> PHP de &oacute;tima performance.</p><h3>Especifique previamente uma vari&aacute;vel para loops &#8220;for&#8221;</h3><p>Uma coisa muito comum de se fazer quando se est&aacute; programando em PHP &eacute; pegar a quantidade de &#8220;qualquer coisa&#8221; e, com ela, realizar um <em>loop</em> <strong>for</strong> para realizar outra &#8220;qualquer coisa&#8221;. E s&atilde;o muitos os programadores que, por falta de conhecimento ou <strong>pregui&ccedil;a</strong>, fazem isso:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;=</span> <span style="color: #990000;">mysql_num_rows</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$resultado</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #009900;">&#91;</span>codigo<span style="color: #009900;">&#93;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><p>Quando, na verdade, isso acarreta em um <strong>processamento extra para cada itera&ccedil;&atilde;o</strong>. Especificando previamente e colocando numa vari&aacute;vel quantas vezes o <em>looping</em> vai acontercer, a carga de processamento fica menor e, consequentemente, seu c&oacute;digo fica otimizado:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$total</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_num_rows</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$resultado</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;=</span> <span style="color: #000088;">$total</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #009900;">&#91;</span>codigo<span style="color: #009900;">&#93;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><h2>Otimiza&ccedil;&atilde;o de vari&aacute;veis e fun&ccedil;&otilde;es</h2><p>Desnecess&aacute;rio comentar sobre a import&acirc;ncia de vari&aacute;veis e fun&ccedil;&otilde;es em um script PHP, por mais simples que seja. Otimizar fun&ccedil;&otilde;es e vari&aacute;veis &eacute; mais que necess&aacute;rio, caso se esteja buscando um desempenho excelente. Essas s&atilde;o dicas r&aacute;pidas e eficientes:</p><ul><li>Utilizar <a
title="Sobre a fun&ccedil;&atilde;o require, no manual oficial do PHP." href="http://uk.php.net/require">require</a> ao inv&eacute;s de <a
title="Sobre a fun&ccedil;&atilde;o require_once, no manual oficial do PHP." href="http://uk.php.net/require_once">require_once</a>;</li><li>Usar caminhos absolutos ao inv&eacute;s de relativos em &#8220;includes&#8221;, &#8220;requires&#8221; e afins &eacute; melhor (embora possa gerar algum inconveniente futuro, por raz&otilde;es &oacute;bvias);</li><li>&#8220;else / if&#8221; &eacute; mais r&aacute;pido que &#8220;switch / case &#8220;;</li><li>Incrementar uma vari&aacute;vel local &eacute; quase 100% mais lento quando n&atilde;o se a especifica previamente.</li></ul><h2>Mais sobre otimiza&ccedil;&atilde;o de c&oacute;digos PHP</h2><p>&Eacute; de se imaginar que, pela &#8220;tradi&ccedil;&atilde;o&#8221; que tem o PHP e a extens&atilde;o que lhe &eacute; caracter&iacute;stica, estas dicas r&aacute;pidas n&atilde;o encerram o assunto. Para muitas outras dicas de como otimizar seus c&oacute;digos em PHP, considere ler os seguintes artigos (em ingl&ecirc;s):</p><ul><li><a
href="http://progtuts.info/55/php-optimization-tips/">PHP Optimization Tips</a>;</li><li><a
href="http://www.hm2k.com/posts/50-php-optimisation-tips-revisited">50+ PHP optimisation tips revisited</a>;</li><li><a
href="http://reinholdweber.com/?p=3">40 Tips for optimizing your php code</a>;</li><li><a
href="http://phplens.com/lens/php-book/optimizing-debugging-php.php">A HOWTO on Optimizing PHP</a>;</li><li><a
href="http://blog.rightbrainnetworks.com/2006/09/18/10-things-you-probably-didnt-know-about-php/">10 things you (probably) didn’t know about PHP</a>.</li></ul><p><strong>E voc&ecirc;, tem alguma dica para otimizar seu c&oacute;digo PHP?</strong></p><h3  class="related_post_title">Artigos Relacionados</h3><ul
class="related_post"><li><a
href="http://desenvolvimentoparaweb.com/jquery/otimizar-codigos-jquery-aumentar-performance-front-end/" title="Como otimizar códigos jQuery e aumentar a performance do front-end">Como otimizar códigos jQuery e aumentar a performance do front-end</a></li><li><a
href="http://desenvolvimentoparaweb.com/wordpress/5-dicas-para-temas-wordpress-melhores/" title="5 dicas para temas WordPress melhores">5 dicas para temas WordPress melhores</a></li><li><a
href="http://desenvolvimentoparaweb.com/miscelanea/8-maneiras-de-melhorar-a-performance-de-um-site/" title="8 maneiras de melhorar a performance de um site">8 maneiras de melhorar a performance de um site</a></li><li><a
href="http://desenvolvimentoparaweb.com/indicacoes/ferramentas-e-recursos-para-desenvolvimento-web/" title="Ferramentas e recursos para desenvolvimento web">Ferramentas e recursos para desenvolvimento web</a></li><li><a
href="http://desenvolvimentoparaweb.com/wordpress/otimizacao-wordpress-performance-desempenho-blog-site/" title="Otimização WordPress: aumente a performance e desempenho de seu blog / site">Otimização WordPress: aumente a performance e desempenho de seu blog / site</a></li><li><a
href="http://desenvolvimentoparaweb.com/jquery/8-dicas-fazer-codigos-melhores-jquery/" title="8 dicas para fazer códigos melhores com jQuery">8 dicas para fazer códigos melhores com jQuery</a></li><li><a
href="http://desenvolvimentoparaweb.com/wordpress/truques-de-configuracao-do-wordpress/" title="Truques de configuração do WordPress">Truques de configuração do WordPress</a></li><li><a
href="http://desenvolvimentoparaweb.com/usabilidade/pergunte-se-a-si-mesmo-questoes-para-desenvolver-um-bom-site/" title="Pergunte-se a si mesmo: questões para desenvolver um bom site">Pergunte-se a si mesmo: questões para desenvolver um bom site</a></li><li><a
href="http://desenvolvimentoparaweb.com/jquery/como-fazer-loading-site-conteudos/" title="Como fazer loading em conteúdos do site">Como fazer loading em conteúdos do site</a></li><li><a
href="http://desenvolvimentoparaweb.com/jquery/melhorando-interacao-formularios-busca/" title="Melhorando a interação em formulários de busca">Melhorando a interação em formulários de busca</a></li></ul>]]></content:encoded> <wfw:commentRss>http://desenvolvimentoparaweb.com/php/dicas-para-otimizar-codigos-php/feed/</wfw:commentRss> <slash:comments>15</slash:comments> </item> <item><title>Swift Mailer: solu&#231;&#227;o PHP para envio de e-mails</title><link>http://desenvolvimentoparaweb.com/php/swift-mailer-solucao-php-para-envio-de-e-mails/</link> <comments>http://desenvolvimentoparaweb.com/php/swift-mailer-solucao-php-para-envio-de-e-mails/#comments</comments> <pubDate>Wed, 23 Jul 2008 20:45:42 +0000</pubDate> <dc:creator>Tárcio Zemel</dc:creator> <category><![CDATA[php]]></category> <category><![CDATA[Ferramentas]]></category> <guid
isPermaLink="false">http://www.desenvolvimentoparaweb.com/?p=212</guid> <description><![CDATA[Swift Mailer &eacute; uma classe PHP com solu&ccedil;&atilde;o completa para o envio de e-mails; conhe&ccedil;a mais sobre esta biblioteca PHP para facilitar o envio de e-mails]]></description> <content:encoded><![CDATA[<p>Uma das partes mais importantes em um <em>web site</em> &eacute; a &aacute;rea de contato. Quer seja um site insitucional, com&eacute;rcio eletr&ocirc;nico, <em>blog</em>, <em>site</em> pessoal ou outros, uma &aacute;rea especialmente dedicada ao envio de mensagens &eacute; essencial, j&aacute; que esta &eacute; a &#8220;ponte&#8221; entre voc&ecirc; (ou a loja, a institui&ccedil;&atilde;o, a f&aacute;brica, o prestador de servi&ccedil;os, etc) e aquele que visita o espa&ccedil;o virtual.</p><p>Para melhorar o tempo do projeto e agilidade e performance da aplica&ccedil;&atilde;o, por vezes &eacute; vantajoso optar por uma solu&ccedil;&atilde;o pronta para envio de <em>e-mails</em>, o que poupa enorme investimento de tempo (custo de oportunidade) e permite desfrutar de uma solu&ccedil;&atilde;o eficiente para envio de mensagens atrav&eacute;s de <em>e-mail</em>, uma biblioteca idealizada e feita visando tal objetivo.</p><h2>Swift Mailer</h2><p><a
title="P&aacute;gina oficial do Swift Mailer." href="http://www.swiftmailer.org/">Swift Mailer</a> &eacute; uma biblioteca PHP &#8211; orientado a objeto &#8211; que tem por finalidade facilitar, agilizar e servir como ferramenta &uacute;til e eficaz para envio de <em>e-mails</em> em <em>web sites</em> e aplica&ccedil;&otilde;es <em>online</em>, em geral. <strong>Enviar e-mails de forma f&aacute;cil com PHP</strong> &eacute; o que &eacute; poss&iacute;vel quando se utiliza Swift Mailer.</p><h2>Caracter&iacute;sticas do Swift Mailer</h2><p>O Swift Mailer n&atilde;o &eacute; simplesmente uma biblioteca PHP para tornar f&aacute;cil de se usar a fun&ccedil;&atilde;o <a
title="Mais sobre a fun&ccedil;&atilde;o mail(), no W3Schools." href="http://www.w3schools.com/PHP/php_mail.asp">mail()</a>, nativa do PHP. Ele prov&ecirc; muito mais recursos e possibilidades &#8211; como citado, Swift Mailer &eacute; uma <strong>biblioteca PHP para envio de e-mails</strong> e, como tal, possui diversas caracteristicas para isso; caracter&iacute;sticas essas que o tornam uma <strong>solu&ccedil;&atilde;o completa em PHP para enviar e-mails</strong>.</p><p>As caracter&iacute;sticas principais do Swift Mailer s&atilde;o:</p><ul><li>Envio de <em>e-mail</em> usando o protocolo SMTP ou MTA, o que tem performance superior que usar a fun&ccedil;&atilde;o nativa mail();</li><li>Controle de cabe&ccedil;alho com <a
title="Mais sobre RFC 2822." href="http://www.faqs.org/rfcs/rfc2822.html">RFC 2822</a>;</li><li>Internacionaliza&ccedil;&atilde;o (<a
title="Mais sobre i18n, na Wikip&eacute;dia." href="http://pt.wikipedia.org/wiki/Internacionaliza%C3%A7%C3%A3o_(software)">i18n</a>);</li><li>Suporte SSL &amp; TLS (para servidores GMail);</li><li>Inclus&atilde;o de arquivos anexos e imagens diretamente no corpo das mensagens;</li><li>Controle de prioridade de mensagens;</li><li>Monitoramente de gasto de banda;</li><li>E-mails com CC e CCo;</li><li>Envio de <em>newsletters</em>;</li><li>Dentre outras caracter&iacute;sticas.</li></ul><p>Enfim, devido a estas caracter&iacute;sticas listadas &#8211; e olha que tem muito mais! -, &eacute; poss&iacute;vel perceber que o Swift Mailer &eacute; uma maneira f&aacute;cil de enviar <em>e-mails</em> (com arquivos anexos, imagens no corpo da mensagem, etc) de forma r&aacute;pida, automatizada e, consequentemente, bem f&aacute;cil.</p><h2>Como usar o Swift Mailer</h2><p>No pr&oacute;prio <a
title="Visitar site oficial do Swift Mailer." href="http://www.swiftmailer.org/"><em>site</em> oficial do Swift Mailer</a> h&aacute; uma s&eacute;rie de documentos, tutoriais e exemplos para quem ainda n&atilde;o usa a biblioteca, passar a us&aacute;-la e n&atilde;o sentir dificuldades em conhecer seu funcionamento.</p><p>Atrav&eacute;s de <a
href="http://www.swiftmailer.org/wikidocs/#library_api_reference">explica&ccedil;&otilde;es sobre a API do Swift Mailer</a>, manual de <a
href="http://www.swiftmailer.org/wikidocs/#installation">instala&ccedil;&atilde;o</a>, configura&ccedil;&atilde;o e uso, <a
href="http://www.swiftmailer.org/wikidocs/#tips_tricks">dicas e truques</a>, <a
href="http://www.swiftmailer.org/wikidocs/#frequently_asked_questions">perguntas mais frequentes</a>, <a
href="http://forums.devnetwork.net/viewforum.php?f=52">f&oacute;rum</a> e <a
href="http://www.swiftmailer.org/wikidocs/">outros tipos de textos de ajuda e explica&ccedil;&atilde;o sobre Swift Mailer</a>, &eacute; poss&iacute;vel conhecer e estudar mais a fundo esta aplica&ccedil;&atilde;o PHP para envio de <em>e-mails</em>.</p><h2>Baixe logo o Swift Mailer!</h2><p>Pessoalmente, como &#8220;sofredor&#8221; de alguns projetos que exigiram um pouco mais de recursos para envio de mensagens, posso afirmar que uma solu&ccedil;&atilde;o completa para envio de mensagens por <em>e-mail</em> como o Swift Mailer &eacute; realmente uma valiosa aquisi&ccedil;&atilde;o para se ter na biblioteca particular de <em>scripts</em> &#8211; todo programador tem uma! :-D</p><p>Com Swift Mailer &eacute; realmente muito simples r&aacute;pido o envio de mensagem por <em>e-mails</em>, em <em>web sites</em>, aplica&ccedil;&otilde;es <em>online</em> e sistemas virtuais de qualquer porte; desde um simples formul&aacute;rio de contato ao envio de <em>newsletters</em>. Com a biblioteca Swift Mailer certamente os problemas relacionados ao envio de <em>emails</em> est&atilde;o com os dias contados e sua produtividade e despreocupa&ccedil;&atilde;o com esta parte do desenvolvimento para <em>web</em>, tamb&eacute;m.</p><div
class="link"><a
title="Visitar a p&aacute;gina oficial do Swift Mailer." href="http://www.swiftmailer.org/">P&aacute;gina oficial do Swift Mailer</a>.</div><h3  class="related_post_title">Artigos Relacionados</h3><ul
class="related_post"><li><a
href="http://desenvolvimentoparaweb.com/javascript/melhores-editores-wysiwyg-para-seu-projeto/" title="Melhores editores WYSIWYG para seu projeto">Melhores editores WYSIWYG para seu projeto</a></li><li><a
href="http://desenvolvimentoparaweb.com/indicacoes/ferramentas-e-recursos-para-desenvolvimento-web/" title="Ferramentas e recursos para desenvolvimento web">Ferramentas e recursos para desenvolvimento web</a></li><li><a
href="http://desenvolvimentoparaweb.com/miscelanea/ferramentas-gratuitas-para-testes-de-seguranca-em-sites/" title="Ferramentas gratuitas para testes de segurança em sites">Ferramentas gratuitas para testes de segurança em sites</a></li><li><a
href="http://desenvolvimentoparaweb.com/usabilidade/recursos-usabilidade/" title="Recursos de usabilidade grátis">Recursos de usabilidade grátis</a></li><li><a
href="http://desenvolvimentoparaweb.com/midia-social/twitter-ferramentas/" title="Ferramentas para o twitter">Ferramentas para o twitter</a></li><li><a
href="http://desenvolvimentoparaweb.com/design/7-ferramentas-para-web-designs-melhores/" title="7 ferramentas para web designs melhores">7 ferramentas para web designs melhores</a></li><li><a
href="http://desenvolvimentoparaweb.com/indicacoes/cushycms-cms-versatil-simples-rapido-facil-e-gratuito/" title="CushyCMS: CMS versátil, simples, rápido, fácil e gratuito">CushyCMS: CMS versátil, simples, rápido, fácil e gratuito</a></li><li><a
href="http://desenvolvimentoparaweb.com/miscelanea/como-tirar-screenshot-de-um-web-site-inteiro-e-obter-uma-imagem-completa/" title="Como tirar screenshot de um web site inteiro e obter uma imagem completa">Como tirar screenshot de um web site inteiro e obter uma imagem completa</a></li><li><a
href="http://desenvolvimentoparaweb.com/indicacoes/redimensionar-e-fazer-montagens-em-imagens-com-o-rsizr/" title="Redimensionar e fazer montagens em imagens com o rsizr">Redimensionar e fazer montagens em imagens com o rsizr</a></li><li><a
href="http://desenvolvimentoparaweb.com/acessibilidade/colorblind-web-page-filter/" title="Colorblind Web Page Filter">Colorblind Web Page Filter</a></li></ul>]]></content:encoded> <wfw:commentRss>http://desenvolvimentoparaweb.com/php/swift-mailer-solucao-php-para-envio-de-e-mails/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Como pegar parte do conte&#250;do (dados) de outro site com PHP</title><link>http://desenvolvimentoparaweb.com/php/como-pegar-parte-do-conteudo-dados-de-outro-site-com-php/</link> <comments>http://desenvolvimentoparaweb.com/php/como-pegar-parte-do-conteudo-dados-de-outro-site-com-php/#comments</comments> <pubDate>Fri, 28 Mar 2008 16:43:06 +0000</pubDate> <dc:creator>Tárcio Zemel</dc:creator> <category><![CDATA[php]]></category> <category><![CDATA[Conteúdo]]></category> <category><![CDATA[Exemplos]]></category> <guid
isPermaLink="false">http://www.desenvolvimentoparaweb.com/php/como-pegar-parte-do-conteudo-dados-de-outro-site-com-php/</guid> <description><![CDATA[Aprenda a pegar parte do conte&uacute;do (dados) de outros sites codificando em PHP, utilizando express&otilde;es regulares]]></description> <content:encoded><![CDATA[<p>Pegar parte do conte&uacute;do de outro <span
lang="en"><em>site</em></span> foi a tarefa que tive que fazer. Pensei que seria bem f&aacute;cil, mas as coisas n&atilde;o sa&iacute;ram exatamente como eu planejava&#8230; Felizmente, consegui! Aprenda, voc&ecirc;, tamb&eacute;m, como coletar informa&ccedil;&otilde;es de outros <span
lang="en">sites</span> na <span
lang="en"><em>internet</em></span>.</p><h2>A miss&atilde;o: pegar parte do conte&uacute;do de um <span
lang="en"><em>site</em></span></h2><p>Hoje, no trabalho, tive a miss&atilde;o de &#8220;puxar&#8221; alguns dados de um <span
lang="en"><em>site</em></span> para &#8220;enxertar&#8221; num trecho de um <span
lang="en"><em>web site</em></span> que estou ajudando a desenvolver. Quando a tarefa me foi passada, logo lembrei de uma ocasi&atilde;o em que um amigo fez a mesma coisa (e, na &eacute;poca, ele me explicou, mais ou menos, com o fez). Pensei que seria muito f&aacute;cil realizar a tarefa, mas, na hora, &#8220;lembrei&#8221; que n&atilde;o sou t&atilde;o bom quanto o <a
title="Visitar o blog do Gev&atilde;." rel="home friend met colleague" href="http://gevaspm.wordpress.com/">Gev&atilde;</a>&#8230; rsrs</p><h2>A solu&ccedil;&atilde;o: fun&ccedil;&otilde;es nativas do PHP e express&otilde;es regulares</h2><p>Passei para pesquisas na <span
lang="en"><em>web</em></span>, procurando desesperadamente material de refer&ecirc;ncia sobre <strong>express&otilde;es regulares</strong> (que, como ver&atilde;o, &eacute; um dos pilares para se conseguir pegar parte do conte&uacute;do de outro <span
lang="en"><em>site</em></span>). Procura daqui, procura de l&aacute;, at&eacute; bate-papo com o Gev&atilde; rolou para eu tentar entender melhor as tais express&otilde;es regulares. At&eacute; que, utilizando um pouco de &#8220;gambiarra&#8221;, consegui realizar meu objetivo.</p><p>A primeira coisa a se fazer, &eacute; pegar o conte&uacute;do da p&aacute;gina inteira que se quer &#8220;manipular&#8221;. Para tal, usa-se, por exemplo, a <a
title="Consultar o manual oficial do PHP sobre a fun&ccedil;&atilde;o file_get_contents." href="http://br2.php.net/file_get_contents">fun&ccedil;&atilde;o file_get_contents()</a>. Jogando o conte&uacute;do do <span
lang="en"><em>site</em></span> numa vari&aacute;vel, ficaria assim (vou fazer o exemplo com o mesmo <span
lang="en"><em>site</em></span> que tive que mexer):</p><p><kbd></kbd></p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
</pre></td><td
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://www.bcb.gov.br/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p>Pronto, agora a vari&aacute;vel <var>$url</var> cont&eacute;m, em <span
lang="en"><em>string</em></span>, todo o conte&uacute;do da p&aacute;gina inicial do <a
title="Visitar a home page do Banco Central do Brasil." rel="home" href="http://www.bcb.gov.br/">BCB</a>.</p><h3>Express&otilde;es regulares</h3><p>At&eacute; aqui foi f&aacute;cil; o dif&iacute;cil foi pegar somente o trecho da p&aacute;gina que eu queria&#8230; Para isso, &eacute; preciso usar <strong>express&otilde;es regulares</strong>!</p><p>Caso voc&ecirc; n&atilde;o saiba o que s&atilde;o express&otilde;es regulares, a&iacute; vai uma sucinta (e incompleta&#8230;) <a
title="Ler o artigo completo da Wikip&eacute;dia sobre express&otilde;es regulares." href="http://pt.wikipedia.org/wiki/Express%C3%A3o_regular">explica&ccedil;&atilde;o de o que s&atilde;o express&otilde;es regulares, da Wikip&eacute;dia</a>:</p><blockquote><p>Uma express&atilde;o regular, na Inform&aacute;tica, define um padr&atilde;o a ser usado para procurar ou substituir palavras ou grupos de palavras. &Eacute; um meio preciso de se fazer buscas de determinadas por&ccedil;&otilde;es de texto.</p></blockquote><p>Com as express&otilde;es regulares &eacute; poss&iacute;vel identificar trechos de palavras ou grupos de palavras que correspondem (&#8220;<span
lang="en"><em>match</em></span>&#8220;) a um determinado padr&atilde;o (&#8220;<span
lang="en"><em>pattern</em></span>&#8220;), que &eacute; &#8220;regular&#8221;.</p><p>O PHP tem <a
title="P&aacute;gina do manual oficial do PHP sobre express&otilde;es regulares." href="http://br.php.net/manual/pt_BR/ref.regex.php">v&aacute;rias fun&ccedil;&otilde;es nativas</a> para trabalhar com express&otilde;es regulares. Basta saber para o que cada uma serve e usar da meneira correta.</p><p>Bem, o pr&oacute;ximo passo para resolu&ccedil;&atilde;o do problema &eacute; identificar o padr&atilde;o que se quer extrair do <span
lang="en"><em>site</em></span>. No caso, eu precisei de uma tabela com algumas taxas cambiais (encontra-se &agrave; direita, no <span
lang="en"><em>site</em></span> do BCB). Observando o c&oacute;digo fonte, vi que as informa&ccedil;&otilde;es est&atilde;o em uma tabela (abordagem semanticamente correta!); al&eacute;m disso, esta tabela est&aacute; envolta entre os coment&aacute;rios HTML &#8220;&lt;!- &#8211; INICIO INDICADORES &#8211; -&gt;&#8221; e &#8220;&lt;!- &#8211; FIMINDICADORES &#8211; -&gt;&#8221;. Isso &eacute; uma coisa boa, j&aacute; que facilita bastante a &#8220;identifica&ccedil;&atilde;o do padr&atilde;o&#8221;.</p><p>Explicando melhor: o padr&atilde;o procurado, no caso, &eacute; tudo o que est&aacute; entre os coment&aacute;rios HTML &#8220;&lt;!- &#8211; INICIO INDICADORES &#8211; -&gt;&#8221; e &#8220;&lt;!- &#8211; FIMINDICADORES &#8211; -&gt;&#8221;. Toda a tabela est&aacute; a&iacute;, para a minha felicidade! :-)</p><p>Ent&atilde;o, tudo o que &eacute; preciso fazer &eacute; utilizar uma fun&ccedil;&atilde;o PHP (para o caso, escolhi a <a
title="P&aacute;gina do manual oficial do PHP sobre a fun&ccedil;&atilde;o preg_match_all." href="http://br.php.net/manual/pt_BR/function.preg-match-all.php">preg_match_all()</a>) para procurar uma <strong>express&atilde;o regular</strong> dentro da vari&aacute;vel <var>$url</var>, que cont&eacute;m toda a primeira p&aacute;gina do <span
lang="en"><em>site</em></span> em que est&aacute; a tabela.</p><p>Depois de muito tempo testando v&aacute;&aacute;&aacute;rias express&otilde;es regulares, cheguei &agrave; conclus&atilde;o que faria uma pequena mutreta. Mas, antes, deixe-me mostrar como est&aacute; o c&oacute;digo at&eacute; agora.</p><p><kbd></p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
</pre></td><td
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://www.bcb.gov.br/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">preg_match_all</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/ORES--&amp;gt;(.+)&lt;!--/s'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #339933;">,</span> <span style="color: #000088;">$conteudo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p></kbd></p><p>Explicando: o primeiro argumento da fun&ccedil;&atilde;o, &eacute; o padr&atilde;o que quero procurar; o segundo, &eacute; onde vou procurar; o terceiro, guarda em um <span
lang="en"><i>array</i></span> todas as ocorr&ecirc;ncias da express&atilde;o procurada. Para a maioria dos casos, talvez j&aacute; estivesse bom, por aqui; entretanto, no problema que tive, ainda &eacute; preciso mais algumas linhas de c&oacute;digo.</p><p>No momento, a vari&aacute;vel <var>$conteudo</var> cont&eacute;m um <span
lang="en"><i>array</i></span> com as ocorr&ecirc;ncias encontradas. Usando um <a
title="P&aacute;gina do manual oficial do PHP sobre a fun&ccedil;&atilde;o print_r." href="http://br.php.net/manual/pt_BR/function.print-r.php" mce_href="http://br.php.net/manual/pt_BR/function.print-r.php">print_r()</a>, descobri em qual posi&ccedil;&atilde;o, exatamente, o que eu procurava estava: <var>$conteudo[0][0]</var>.</p><h3>Fazendo uma &#8220;mutreta&#8221;</h3><p>Para fazer a tal &#8220;mutreta&#8221;, jogo o conte&uacute;do desta posi&ccedil;&atilde;o da matriz para uma outra vari&aacute;vel (para facilitar a manipula&ccedil;&atilde;o).</p><p><kbd></p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
</pre></td><td
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://www.bcb.gov.br/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">preg_match_all</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/ORES--&gt;(.+)&lt;!--/s'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #339933;">,</span> <span style="color: #000088;">$conteudo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$exibir</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$conteudo</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p></kbd></p><p>Havia trechos do que me foi retornado (ou seja, da tabela com as taxas cambiais) que eu n&atilde;o queria que aparecessem no <span
lang="en"><i>site</i></span> (como alguns links). Ent&atilde;o, resolvi retir&aacute;-los atrav&eacute;s da fun&ccedil;&atilde;o <a
title="P&aacute;gina do manual oficial do PHP sobre a fun&ccedil;&atilde;o str_replace." href="http://br.php.net/manual/pt_BR/function.str-replace.php" mce_href="http://br.php.net/manual/pt_BR/function.str-replace.php">str_replace()</a>, que substitui trechos de <span
lang="en"><i>strings</i></span>. &Eacute; poss&iacute;vel, como argumento, passar um array. Ent&atilde;o, por enquanto e quase no fim, o c&oacute;digo est&aacute; assim:</p><p><kbd></p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
</pre></td><td
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://www.bcb.gov.br/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">preg_match_all</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/ORES--&gt;(.+)&lt;!--/s'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #339933;">,</span> <span style="color: #000088;">$conteudo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$exibir</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$conteudo</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$retirar</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mais moedas'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'atas Copom'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'mais detalhes'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'ORES--&gt;'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'&lt;!--'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$exibir</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$retirar</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #000088;">$exibir</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p></kbd></p><p>Ou seja: sempre que aparecer alguns dos itens do <span
lang="en"><i>array</i></span> <var>$retirar</var> em <var>$exibir</var>, ser&aacute; substitu&iacute;do por &#8220;&#8221; (nada&#8230;). Perceba que os &uacute;ltimos dois elementos do <span
lang="en"><i>array</i></span> s&atilde;o &#8220;polui&ccedil;&otilde;es&#8221; desnecess&aacute;rias, que vieram devido &agrave; minha pregui&ccedil;a de fazer uma express&atilde;o regular mais elaborada. :-)</p><h3>Finalizando&#8230;</h3><p>Depois disso, basta mandar exibir na tela o que &#8220;sobrou&#8221; do conte&uacute;do retira da p&aacute;gina inicial do <span
lang="en"><i>site</i></span> do BCB.</p><p><kbd></p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://www.bcb.gov.br/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">preg_match_all</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/ORES--&gt;(.+)&lt;!--/s'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #339933;">,</span> <span style="color: #000088;">$conteudo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$exibir</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$conteudo</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">&lt;/</span>span<span style="color: #339933;">&gt;;</span>
<span style="color: #000088;">$retirar</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mais moedas'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'atas Copom'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'mais detalhes'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'ORES--&gt;'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'&lt;!--'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$exibir</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$retirar</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #000088;">$exibir</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$exibir</span><span style="color: #339933;">;</span></pre></td></tr></table></div><h2>E se o servidor n&atilde;o permite a fun&ccedil;&atilde;o file_get_contents() ?</h2><p>H&aacute; muitos servidores que, por motivos diversos (principalmente "seguran&ccedil;a"), n&atilde;o permitem que se utilize a fun&ccedil;&atilde;o <strong>file_get_contents()</strong>. Para esses casos, &eacute; poss&iacute;vel colocar numa vari&aacute;vel alguma p&aacute;gina externa utilizando o seguinte c&oacute;digo (depois voc&ecirc; procura as explica&ccedil;&otilde;es no <a
title="Ler o manual oficial do PHP (leitura extensa...)." href="http://www.php.net/manual/pt_BR/">manual oficial do PHP</a>):</p><p><kbd></p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$ch</span> <span style="color: #339933;">=</span> <span style="color: #990000;">curl_init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$timeout</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_URL<span style="color: #339933;">,</span> <span style="color: #0000ff;">'O_SITE_QUE_VOCE_QUER'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_RETURNTRANSFER<span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_CONNECTTIMEOUT<span style="color: #339933;">,</span> <span style="color: #000088;">$timeout</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$conteudo</span> <span style="color: #339933;">=</span> <span style="color: #990000;">curl_exec</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">curl_close</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p></kbd></p><p>Ent&atilde;o, o conte&uacute;do da p&aacute;gina "O_SITE_QUE_VOCE_QUER" estar&aacute; na vari&aacute;vel <var>$conteudo</var>.</p><h2>Conclus&atilde;o</h2><p>Ent&atilde;o, pessoal, para se retirar uma parte do conte&uacute;do de um <span
lang="en"><em>web site</em></span> (utilizando PHP), os passos s&atilde;o:</p><ul><li>Saber em qual p&aacute;gina est&aacute; o conte&uacute;do que se precisa;</li><li>Jogar o conte&uacute;do do <span
lang="en"><em>site</em></span> em uma vari&aacute;vel;</li><li>Extrair o trecho que se quer utilizando express&otilde;es regulares;</li><li>Se preciso, cortar mais algumas coisas do resultado da ER;</li><li>Exibir em tela o resultado final.</li></ul><p>O grande <strong>pulo do gato</strong>, neste caso, &eacute; saber mexer com express&otilde;es regulares; coisa que, sinto informar, s&oacute; se aprende fazendo! E fazendo muito! Leia as refer&ecirc;ncias no fim deste artigo e procure na internet mais material a respeito.</p><p>Uma outra coisa importante &eacute; o seguinte: tenha sempre em mente que, como voc&ecirc; est&aacute; pegando o conte&uacute;do de um <span
lang="en"><em>site</em></span>, caso este altere sua estrutura, muito provavelmente ser&aacute; preciso alterar a express&atilde;o regular, tamb&eacute;m.</p><p>Fique ciente de uma coisa: se voc&ecirc;, desenvolvedor <span
lang="en"><em>web</em></span>, ainda n&atilde;o precisou usar express&otilde;es regulares, pode ter certeza de que sua hora vai chegar!</p><div
class="referenciasNacionais"><h2>Refer&ecirc;ncias Nacionais</h2><p><a
rel="home colleague" href="http://guia-er.sourceforge.net/">Express&otilde;es Regulares - Guia de Consulta R&aacute;pida</a></p><p>Este &eacute; o guia de <a
title="Mais informa&ccedil;&otilde;es sobre o Aurelio." rel="colleague" href="http://aurelio.net/mim.html">Aur&eacute;lio Marinho Jargas</a>, excelente para se aprender express&otilde;es regulares e para se consultar nos momentos de aperto!</p><p><a
rel="colleague" href="http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1418">Express&otilde;es Regulares no PHP</a></p><p>Artigo do <a
href="http://www.vivaolinux.com.br/">Viva o Linux</a>, de <a
href="http://www.vivaolinux.com.br/perfil/verPerfil.php?login=gatecrasher">Marcelo Santos Araujo</a>, com uma introdu&ccedil;&atilde;o sobre express&otilde;es regulares.</div><div
class="referenciasNacionais"><h2>Refer&ecirc;ncias Internacionais</h2><p><a
rel="home" href="http://www.regular-expressions.info/"><span
lang="en">Regular-Expressions.info</span></a></p><p><span
lang="en"><em>Site</em></span> especialmente dedicado &agrave;s express&otilde;es regulares.</p><p><a
href="http://regexlib.com/"><span
lang="en">Regular Expression Library</span></a></p><p>Biblioteca virtual de express&otilde;es regulares.</p><p><a
href="http://www.gskinner.com/RegExr/"><span
lang="en">RegExr</span></a></p><p>Para testar express&otilde;es regulares em tempo real!</p></div> </pre><h3  class="related_post_title">Artigos Relacionados</h3><ul
class="related_post"><li><a
href="http://desenvolvimentoparaweb.com/javascript/json-javascript-object-notation/" title="JSON &#8211; JavaScript Object Notation">JSON &#8211; JavaScript Object Notation</a></li><li><a
href="http://desenvolvimentoparaweb.com/jquery/como-criar-sumarios-dinamicamente-com-o-toc-table-of-contents-jquery-plugin-jquerytoc/" title="Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin">Como criar sumários dinamicamente com o TOC (Table of Contents) jQuery plugin</a></li><li><a
href="http://desenvolvimentoparaweb.com/miscelanea/estrategia-de-conteudo-content-strategy/" title="Estratégia de Conteúdo ou Content Strategy">Estratégia de Conteúdo ou Content Strategy</a></li><li><a
href="http://desenvolvimentoparaweb.com/css/urls-longas-apresentadas-corretamente-com-css/" title="URLs longas apresentadas corretamente com CSS">URLs longas apresentadas corretamente com CSS</a></li><li><a
href="http://desenvolvimentoparaweb.com/seo/erros-comuns-desenvolvimento-web-campanhas-seo/" title="Erros comuns em desenvolvimento web para campanhas de SEO">Erros comuns em desenvolvimento web para campanhas de SEO</a></li><li><a
href="http://desenvolvimentoparaweb.com/jquery/melhorando-interacao-formularios-busca/" title="Melhorando a interação em formulários de busca">Melhorando a interação em formulários de busca</a></li><li><a
href="http://desenvolvimentoparaweb.com/php/urls-amigaveis-slug-a-wordpress/" title="URLs amigáveis (slug) à WordPress">URLs amigáveis (slug) à WordPress</a></li><li><a
href="http://desenvolvimentoparaweb.com/wordpress/15-comandos-sql-wordpress/" title="15 fantásticos comandos SQL para WordPress">15 fantásticos comandos SQL para WordPress</a></li><li><a
href="http://desenvolvimentoparaweb.com/usabilidade/breadcrumbs-guia-completo-exemplos-melhores-praticas/" title="Breadcrumbs: guia completo com exemplos e melhores práticas">Breadcrumbs: guia completo com exemplos e melhores práticas</a></li><li><a
href="http://desenvolvimentoparaweb.com/miscelanea/perguntas-cliente-antes-depois-projeto/" title="Perguntas ao cliente para antes e depois de um projeto">Perguntas ao cliente para antes e depois de um projeto</a></li></ul>]]></content:encoded> <wfw:commentRss>http://desenvolvimentoparaweb.com/php/como-pegar-parte-do-conteudo-dados-de-outro-site-com-php/feed/</wfw:commentRss> <slash:comments>82</slash:comments> </item> </channel> </rss>
