<?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>Spartan Code - Blog</title>
	<atom:link href="http://www.spartan-code.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.spartan-code.com/blog</link>
	<description>web development</description>
	<lastBuildDate>Fri, 04 Nov 2011 19:43:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
	<!-- google_ad_section_end --><!-- google_ad_section_start(weight=ignore) -->	<item>
		<title>Cómo contar los valores de las consultas de MySQL</title>
		<link>http://www.spartan-code.com/blog/sql/como-contar-los-valores-de-las-consultas-de-mysql/</link>
		<comments>http://www.spartan-code.com/blog/sql/como-contar-los-valores-de-las-consultas-de-mysql/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 19:43:12 +0000</pubDate>
		<dc:creator>Pirata21</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[count]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[recorrer columna en mysql]]></category>

		<guid isPermaLink="false">http://www.spartan-code.com/blog/?p=86</guid>
		<description><![CDATA[How to count values with MySQL queries Last updated on November 11, 2008 Digamos que usted tiene la siguiente tabla se llama votos que realiza un seguimiento de cómo la gente votó y que desea una consulta para contar el número de votos, en lugar de tener que recorrer todas las filas con un contador [...]]]></description>
			<content:encoded><![CDATA[<p>How to count values with MySQL queries<br />
Last updated on November 11, 2008</p>
<p>Digamos que usted tiene la siguiente tabla se llama votos que realiza un seguimiento de cómo la gente votó y que desea una consulta para contar el número de votos, en lugar de tener que recorrer todas las filas  con un contador con un contador en PHP</p>
<p>person 	vote<br />
obama 	yes<br />
mccain 	no<br />
obama 	yes<br />
obama 	no<br />
mccain 	yes<br />
obama 	yes<br />
obama 	yes<br />
obama 	no<br />
mccain 	no</p>
<p>Esta es la solucion con MYSQL</p>
<p>SELECT person,<br />
SUM(IF(vote = &#8220;yes&#8221;, 1,0)) AS `yes_votes`,<br />
SUM(IF(vote = &#8220;no&#8221;, 1,0)) AS `no_votes`,<br />
COUNT(vote) AS `total`<br />
FROM votes<br />
GROUP BY person<br />
ORDER BY yes_votes DESC</p>
<p> El siguiente sería el resultado de la consulta:<br />
person 	yes_votes 	no_votes 	total<br />
obama 	4 	2 	6<br />
mccain 	1 	2 	3</p>
<p>Ahora, usted no tiene que recorrer los resultados de MySQL para contar valores de la columna =)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spartan-code.com/blog/sql/como-contar-los-valores-de-las-consultas-de-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AWS is down: Why the sky is falling</title>
		<link>http://www.spartan-code.com/blog/uncategorized/aws-is-down-why-the-sky-is-falling/</link>
		<comments>http://www.spartan-code.com/blog/uncategorized/aws-is-down-why-the-sky-is-falling/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 18:53:24 +0000</pubDate>
		<dc:creator>Pirata21</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.spartan-code.com/blog/?p=85</guid>
		<description><![CDATA[Amazon Web Services, &#8220;the cloud&#8221; to many people, has had a significant issue in one of their datacenters since about 1AM Pacific time April 21st. Some huge websites (reddit, quora, foursquare) are all down or significantly impacted. I&#8217;ve seen a lot of misinformation which suggests that this is all purely due to the laziness of [...]]]></description>
			<content:encoded><![CDATA[<p>Amazon Web Services, &#8220;the cloud&#8221; to many people, has had a significant issue in one of their datacenters since about 1AM Pacific time April 21st.  Some huge websites (reddit, quora, foursquare) are all down or significantly impacted.  I&#8217;ve seen a lot of misinformation which suggests that this is all purely due to the laziness of the affected sites&#8217; engineers, but that isn&#8217;t the case.  Here&#8217;s why:</p>
<p>AWS has two concepts that relate to availability &#8211; Regions and Availability Zones.  They have five Regions &#8211; two in the US (one east coast, one west coast), one in Europe (Ireland), and two in Asia (Tokyo, Singapore).  Each region has within it multiple &#8220;Availability Zones&#8221; (AZs), which are supposed to be isolated so that they have no single point of failure less than a natural disaster or something of that magnitude.  AWS says that by &#8220;launching instances in separate Availability Zones, you can protect your applications from failure of a single location&#8221;.  It&#8217;s not clear whether &#8216;location&#8217; means separate datacenters or separate floors/areas of a single datacenter, but it doesn&#8217;t really matter &#8211; the point is that AZs should fail independently until a catastrophic failure occurs. [Update below: it seems likely that they are in fact separate datacenters]</p>
<p>AZs also offer &#8220;inexpensive, low latency network connectivity to other Availability Zones in the same Region&#8221;.  Inter-Region transfer, on the other hand, goes over the public internet, and is comparatively expensive, slow and unreliable.</p>
<p>These are the &#8220;rules of the game&#8221;.  So if you&#8217;re playing the AWS game and setting up a master/slave MySQL database (to take a highly pertinent example), what you do is you put the master and the slave in the same Region, but make sure they&#8217;re in different Availability Zones.  You don&#8217;t normally put them in separate Regions, otherwise you have to cross the expensive, slow and unreliable links between Regions, and you&#8217;ll likely have more problems trying to keep your databases in sync.  You are at risk e.g. if a hurricane hits the eastern seaboard and destroys the datacenter, but short of that you should be OK &#8211; as long as AWS does what they promised.</p>
<p>So (finally) we come to the problem.  This morning, multiple availability zones failed in the us-east region.  AWS broke their promises on the failure scenarios for Availability Zones.  It means that AWS have a common single point of failure (assuming it wasn&#8217;t a winning-the-lottery-while-being-hit-by-a-meteor-odds coincidence).  The sites that are down were correctly designing to the &#8216;contract&#8217;; the problem is that AWS didn&#8217;t follow their own specifications.  Whether that happened through incompetence or dishonesty or something a lot more forgivable entirely, we simply don&#8217;t know at this point.  But the engineers at quora, foursquare and reddit are very competent, and it&#8217;s wrong to point the blame in that direction.</p>
<p>Of course it&#8217;s possible to protect against a catastrophic failure (multiple AZs), but for most businesses the additional expense and engineering effort isn&#8217;t worth it (or may even be counterproductive by introducing additional complexity).  I&#8217;m sure all the sites that are down have backups they could go to.  The problem is that bringing them online is likely complicated and risky &#8211; in practice you have to move everything to the new region, because otherwise the latency between your machines is too big.  AWS has made this particularly complicated: the different regions have different features available, different AMI ids, I think reserved instances can&#8217;t be moved between datacenters &#8211; in reality failover between regions is not realistic.  It&#8217;s probably as much work as failover to a completely different cloud, which is probably a better disaster recovery policy anyway.  For all we know quora started the process the minute AWS had an issue and are still working on it &#8211; it could easily be a whole-day process.  Perhaps they would have started that process had AWS communicated at the start that it would have been such a big outage, but AWS communication is &#8211; frankly &#8211; abysmal other than their PR.</p>
<p>So &#8211; in short &#8211; the blame here lies squarely with AWS, who &#8216;guaranteed&#8217; a contract they then broke.  Mistakes happen, but the mistake here was an AWS mistake.</p>
<p>Nor was this a failure of &#8220;the cloud&#8221;.  It does show the importance of choosing your cloud provider carefully.  I think many people will be reasssesing their choice of AWS.</p>
<p><strong>A few other tidbits:</strong></p>
<ul>
<li>   The reason so many websites are in us-east is because that&#8217;s where the new features get rolled out first.  It&#8217;s also the cheapest.  It&#8217;s also probably best located in terms of many website&#8217;s traffic (good performance for the North America, reasonable performance for Europe)</li>
<li>    The actual failure was due to EBS (persistent disks), which have been a disaster in terms of reliability since their introduction.  But that&#8217;s a whole different blog post!</li>
<li>An EBS volume can only be in one AZ, and can only be used from that AZ.  RDS seems to use a private API that lets EBS volumes be in multiple AZs, but those aren&#8217;t available to anyone competing with RDS (hmmm&#8230; a Seattle company using private APIs to gain competitive advantage &#8211; haven&#8217;t we been here before?) </li>
</ul>
<p><strong>EC2 FAQ offers a stronger guarantee:</strong></p>
<p>&#8220;Each availability zone runs on its own physically distinct, independent infrastructure, and is engineered to be highly reliable. Common points of failures like generators and cooling equipment are not shared across Availability Zones. Additionally, they are physically separate, such that even extremely uncommon disasters such as fires, tornados or flooding would only affect a single Availability Zone.&#8221; <a href="http://aws.amazon.com/ec2/faqs/#How_isolated_are_Availability_Zones_from_one_another"> http://aws.amazon.com/ec2/faqs/#How_isolated_are_Availability_Zones_from_one_another</a></p>
<p>So it sounds like AZs are, in fact, separate datacenters and not just separate floors / rooms.  That makes multi-AZ failure even less acceptable.</p>
<p>Also, I used the word &#8220;contract&#8221; above, but I meant it in the technical sense, not the legal sense.  The legal contract is the SLA, which I consider relatively worthless.  Engineers designed to the AWS technical &#8216;guarantees&#8217;, but a multi-AZ failure shouldn&#8217;t happen if AWS is upholding their end of the &#8216;bargain&#8217;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spartan-code.com/blog/uncategorized/aws-is-down-why-the-sky-is-falling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cambios en el algoritmo de google</title>
		<link>http://www.spartan-code.com/blog/seo/cambios-en-el-algoritmo-de-google/</link>
		<comments>http://www.spartan-code.com/blog/seo/cambios-en-el-algoritmo-de-google/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 13:35:21 +0000</pubDate>
		<dc:creator>Pirata21</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.spartan-code.com/blog/?p=82</guid>
		<description><![CDATA[Si algo es constante en mundo del SEO es que cada vez que de la boca de un responsable de Google salen las palabras &#8220;cambio&#8221; y &#8220;algoritmo&#8221; la gente se revoluciona y empiezas a oir muchas cosas sacadas totalmente de contexto. Con el fin de ayudar un poco a evitar propagar claras mentiras por la [...]]]></description>
			<content:encoded><![CDATA[<p>Si algo es constante en mundo del SEO es que cada vez que de la boca de un responsable de Google salen las palabras &#8220;cambio&#8221; y &#8220;algoritmo&#8221; la gente se revoluciona y empiezas a oir muchas cosas sacadas totalmente de contexto.</p>
<p>Con el fin de ayudar un poco a evitar propagar claras mentiras por la red quiero dejar este post aquí. Si alguien no está de acuerdo con lo que comento es libre de usar los comentarios para argumentar porqué no cree que estoy en lo cierto. En fín, vamos a tratar el tema de moda: &#8220;Las granjas de Contenidos&#8221;.</p>
<p>Llevamos hablando de las granjas de contenidos unos meses. No es algo nuevo, simplemente Google ha hecho una de sus declaraciones &#8220;oficiales&#8221; y parece que nos hayan quitado una venda de los ojos. Lo primero es eliminar esta creencia. Quien hacía granjas de contenidos en los últimos años quizás no las llamaba así, pero sabía perfectamente que estaba haciendo &#8220;Black Hat&#8221; -Seo en contra de las normas de Google y que por tanto puede provocar penalizaciones-. Nutrir la web de Spam o de contenidos creados solo y absolutamente para SEO no sigue las directrices de Google, no nos hace falta leerlas, es de toda lógica que es así al igual que sabemos que comprar enlaces tampoco va a gustarle. A veces nos tapamos los ojos pensando en algoritmos y códigos pero lo que importa es saber que hay gente detrás de todo esto que llamamos &#8220;el algoritmo de Google&#8221; y la lógica se impone siempre, más tarde o más temprano.</p>
<p>Sin embargo, este último año hemos vivido como el SEO se ha popularizado y como el link fuera de contexto perdía fuerza. En conclusión la salida rápida para ganar links para cualquiera que trabaja SEO en serio ha sido la de crear contenido nuevo. Formas de hacerlo hay cientos pero os resumiré algunas por orden de complejidad y recursos necesarios:</p>
<p>- Robando por RSS el contenido de otros blogs.</p>
<p>- Robándolo a mano con un corta y pega.</p>
<p>- Robando fragmentos de varios contenidos distintos para montar el tuyo más amplio.</p>
<p>- Reescribiedno solo pequeñas partes y fragmentos del mismo (con el mito de que si es más del 20% no es duplicado).</p>
<p>- Automatizando la recogida de estos pequeños fragmentos de varias fuentes. Según el esquema HTML o de microformatos del site.</p>
<p>- Creando o aprovechando sites &#8220;sociales&#8221; donde subir noticias interesantes o publicar duplicados de nuestros blogs.</p>
<p>- Reescribiendo frase a frase los contenidos.</p>
<p>- Creando nuevos contenidos sin pensar. Solo hablar de un tema pero sin aportar nada (post de muy bajo precio que escriba cualquier chaval).</p>
<p>- Hacer lo mismo pero añadiendo además contenido multimedia (fotos, videos, etc.)</p>
<p>- Crear de verdad artículos nuevos.</p>
<p>De esta lista a poco que lo pensemos sabemos que absolutamente todo menos el último punto es medianamente Black Hat o directamente Spam. Y por eso estas cosas son a por las que va a ir ahora Google. Cómo va a conseguir detectar esto en función de algoritmos, plugins de chrome y barras de navegadores es, por mucho que debatamos, totalmente indiferente&#8230; ¿no creéis? ¿Qué nos importa la solución mágica que adopte Google?, es divertido seguirlo y hacer nuestras predicciones pero debemos asumir que lo conseguirá (o eso o a la larga se hunden).</p>
<p>Lo importante para nuestro negocio es saber que la actual meta de Google es detectar y descartar todo este contenido de dudosa o nula calidad y actuar en consecuencia. No ya solo por lo que está pasando ahora mismo, sino por lo que seguramente va a pasar los próximos meses. Porque seamos serios: no hay datos de que estos cambios estén actuando actualmente en ningún idioma distinto al inglés ni en ningún sitio fuera de USA así que dejemos de gritar &#8220;acojonados&#8221; en un rincón. Yo personalmente no me creo que en dos meses nos llegue -como se dice-&#8230; ¿cuando nos ha llegado al español tan rapido cualquier actualización? Pero puedo equivocarme e independientemente a eso, lo cierto es que hay que actuar lo antes posible como si la actualización ya nos afectase y así nos evitaremos futuros sustos.</p>
<p>Así que lo primero es detectar que estoy haciendo que podría llegar a ser penalizado. Aquí estoy viendo demasiada preocupación&#8230; parece que ahora crear un blog o dotar de contenido un site vaya a ser penalizado cuando esas son precisamente la metodologías que más le gustan al buscador. Además muchos tipos de estrategias que quedarían en la linea de si van a considerarse o no Granja de contenidos se da por supuesto que lo son. Así que tengamos claro que:</p>
<p>- Un blog con contenido propio no es granja de contenidos.</p>
<p>- Dotar a nuestro site de contenido extra haciendolo abarcar cada vez más temas no es granja de contenidos.</p>
<p>- Crear sites satelites con contenidos propios y relevantes no es granja de cotenidos a no ser que seamos muy bestias con los links o los dirijamos siempre hacia los mismos X dominios.</p>
<p>- Un site de productos con descripciones propios no es granja de contenidos.</p>
<p>- Una wiki con contenido propio no es granja de contenidos.</p>
<p>- Leer una noticia y escribir sobre la misma con un link a la original pero sin copiarla y aportando más datos o detalles no te acerca a ser una granja de contenidos.</p>
<p>Por el contrario:</p>
<p>- Copiar duplicar o parsear/scrapear contenidos para hacer un site, si te lo convierte en granja de contenidos.</p>
<p>- Reescribir post con tus propias palabras pero sin aportar contenido, si que podría llegar a considerarse granja de contenidos algún día (aunque en español, por las características de nuestro lenguaje estamos lejos de eso).</p>
<p>- Agrupar noticias y posts si que es granja de contenidos. Grandes como Meneame o Bitacoras pueden preocuparse.</p>
<p>- Montar sites de afiliación copiando y pegando las definiciones originales del producto si que es granja de contenidos.</p>
<p>&#8230;</p>
<p>Y hasta ahí con los ejemplos&#8230; ¿alguien da más?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spartan-code.com/blog/seo/cambios-en-el-algoritmo-de-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scrollear hacia arriba con Jquery</title>
		<link>http://www.spartan-code.com/blog/effects/scrollear-hacia-arriba-con-jquery/</link>
		<comments>http://www.spartan-code.com/blog/effects/scrollear-hacia-arriba-con-jquery/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 17:35:26 +0000</pubDate>
		<dc:creator>Pirata21</dc:creator>
				<category><![CDATA[effects]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[utils]]></category>
		<category><![CDATA[back to top]]></category>
		<category><![CDATA[efecto]]></category>

		<guid isPermaLink="false">http://www.spartan-code.com/blog/?p=81</guid>
		<description><![CDATA[Hacer los botones para volver arriba(back to top) en nuestro sitio mas web 2.0 al usar efectos JS &#60;script type=&#34;text/javascript&#34;&#62; &#160; &#160; &#160; $&#40;document&#41;.ready&#40;function&#40;&#41; &#123; &#160; &#160; &#160; &#160; &#160; $&#40;&#39;.backtotop&#39;&#41;.click&#40;function&#40;&#41;&#123; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;$&#40;&#39;html, body&#39;&#41;.animate&#40;&#123;scrollTop:0&#125;, &#39;slow&#39;&#41;; &#160; &#160; &#160; &#160; &#160; &#125;&#41;; &#160; &#160; &#160; &#125;&#41;; &#60;/script&#62; HTML &#60;a href=&#34;javascript:;&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>Hacer los botones para volver arriba(back to top) en nuestro sitio mas web 2.0 al usar efectos</p>
<p><strong>JS</strong></p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>script type=<span class="st0">&quot;text/javascript&quot;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.<span class="me1">ready</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&#39;.backtotop&#39;</span><span class="br0">&#41;</span>.<span class="me1">click</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$<span class="br0">&#40;</span><span class="st0">&#39;html, body&#39;</span><span class="br0">&#41;</span>.<span class="me1">animate</span><span class="br0">&#40;</span><span class="br0">&#123;</span>scrollTop:<span class="nu0">0</span><span class="br0">&#125;</span>, <span class="st0">&#39;slow&#39;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>script<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
<p><strong>HTML</strong></p>
<div class="geshi no html">
<ol>
<li class="li1">
<div class="de1">&lt;a href=&quot;javascript:;&quot; class=&quot;backtotop&quot;&gt;Back to top&lt;/a&gt;</div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.spartan-code.com/blog/effects/scrollear-hacia-arriba-con-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar mySQL en Ubuntu</title>
		<link>http://www.spartan-code.com/blog/linux/instalar-mysql-en-ubuntu/</link>
		<comments>http://www.spartan-code.com/blog/linux/instalar-mysql-en-ubuntu/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 14:16:52 +0000</pubDate>
		<dc:creator>Pirata21</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.spartan-code.com/blog/?p=80</guid>
		<description><![CDATA[Instalar MySQL 5 Server en Ubuntu es un facil y rapido proceso. Abrir una terminal y colocar los siguientes comandos: &#160; &#160; sudo apt-get install mysql-server Si estas corriendo PHP tambien se necesita instalar el modulo de php para mysql5 &#160; &#160; sudo apt-get install php5-mysql Para crear una nueva base de datos: &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Instalar MySQL 5 Server en Ubuntu es un facil y rapido proceso.</p>
<p>Abrir una terminal y colocar los siguientes comandos:</p>
<div class="geshi no terminal">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; sudo apt-get install mysql-server</div>
</li>
</ol>
</div>
<p>Si estas corriendo PHP tambien se necesita instalar el modulo de php para mysql5</p>
<div class="geshi no terminal">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; sudo apt-get install php5-mysql</div>
</li>
</ol>
</div>
<p>Para crear una nueva base de datos:</p>
<div class="geshi no terminal">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; mysqladmin create &lt;databasename&gt;</div>
</li>
</ol>
</div>
<p>Vieron?, es realmente facil</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spartan-code.com/blog/linux/instalar-mysql-en-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enviar errores de Php por email(Custom error handlers))</title>
		<link>http://www.spartan-code.com/blog/php/enviar-errores-de-php-por-emailcustom-error-handlers/</link>
		<comments>http://www.spartan-code.com/blog/php/enviar-errores-de-php-por-emailcustom-error-handlers/#comments</comments>
		<pubDate>Tue, 04 Jan 2011 14:08:40 +0000</pubDate>
		<dc:creator>Pirata21</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[custom error handlers]]></category>
		<category><![CDATA[errors]]></category>
		<category><![CDATA[mail]]></category>

		<guid isPermaLink="false">http://www.spartan-code.com/blog/?p=79</guid>
		<description><![CDATA[Aqui también vamos a aprender cómo enviar un correo electrónico con los posibles errores. De esta manera, cuando la aplicación web ha dado un error, un mail nos notificara que ha sucedido, y en que linea de codigo. &#60;?php &#160; &#160;// Nuestro propio error handler &#160;function spartan_code_error_handler&#40;$errorNumero, $mensaje, $archivo, $linea, $variables&#41; &#160;&#123; &#160; $email = [...]]]></description>
			<content:encoded><![CDATA[<p>Aqui también vamos a aprender cómo enviar un correo electrónico con los posibles errores. </p>
<p>De esta manera, cuando la aplicación web ha dado un error, un mail nos notificara que ha sucedido, y en que linea de codigo.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// Nuestro propio error handler</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">function</span> spartan_code_error_handler<span class="br0">&#40;</span><span class="re1">$errorNumero</span><span class="sy0">,</span> <span class="re1">$mensaje</span><span class="sy0">,</span> <span class="re1">$archivo</span><span class="sy0">,</span> <span class="re1">$linea</span><span class="sy0">,</span> <span class="re1">$variables</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$email</span> <span class="sy0">=</span> <span class="st0">&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &lt;p&gt;El error ($errorNumero) ha ocurrido en la linea</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &lt;strong&gt;$linea&lt;/strong&gt; en el archivo &lt;strong&gt;file: $archivo.&lt;/strong&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &lt;p&gt; $mensaje &lt;/p&gt;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$email</span> <span class="sy0">.=</span> <span class="st0">&quot;&lt; pre&gt;&quot;</span> <span class="sy0">.</span> <span class="kw3">print_r</span><span class="br0">&#40;</span><span class="re1">$variables</span><span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st0">&quot;&lt; /pre&gt;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$headers</span> <span class="sy0">=</span> <span class="st0">&#39;Content-type: text/html; charset=iso-8859-1&#39;</span> <span class="sy0">.</span> <span class="st0">&quot;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">// Nuestro Email&#8230;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">error_log</span><span class="br0">&#40;</span><span class="re1">$email</span><span class="sy0">,</span> <span class="nu0">1</span><span class="sy0">,</span> <span class="st0">&#39;you@youremail.com&#39;</span><span class="sy0">,</span> <span class="re1">$headers</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">// Asegúrese de que usted decide cómo responder a los errores (en el lado del usuario)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">// Podemos hacer un &quot;echo&quot; de un mensaje de error, o matar a todo el proyecto. Hasta que el código sea solucionado</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">//en este caso la aplicacion hara un &quot;die&quot; solo si el error es mas de una NOTICE</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> <span class="br0">&#40;</span><span class="re1">$numero</span> <span class="sy0">!==</span> <span class="kw2">E_NOTICE</span><span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span> <span class="br0">&#40;</span><span class="re1">$numero</span> <span class="sy0">&lt;</span> <span class="nu0">2048</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw3">die</span><span class="br0">&#40;</span><span class="st0">&quot;Ups!. Ha ocurrido un error, intente de nuevo&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">//Seteamos nuestra funcion en caso de error</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">set_error_handler</span><span class="br0">&#40;</span><span class="st0">&#39;spartan_code_error_handler&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// Para probar ejecutamos el error imprimiendo una variable que no no existe</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">echo</span> <span class="re1">$bananas</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.spartan-code.com/blog/php/enviar-errores-de-php-por-emailcustom-error-handlers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google CTR</title>
		<link>http://www.spartan-code.com/blog/seo/google-ctr/</link>
		<comments>http://www.spartan-code.com/blog/seo/google-ctr/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 18:09:53 +0000</pubDate>
		<dc:creator>Pirata21</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[ctr]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.spartan-code.com/blog/?p=77</guid>
		<description><![CDATA[CTR son las siglas de &#8220;Click-through rate&#8221;, es decir el ratio de clicks que tus paginas reciben en cualquier medio en el que se imprimen tus anuncios o links. Es una medida muy estandarizada y relevante que nos permite ver la conversión que hay desde que el medio usado muestra nuestra página hasta que realmente [...]]]></description>
			<content:encoded><![CDATA[<p>CTR son las siglas de &#8220;Click-through rate&#8221;, es decir el ratio de clicks que tus paginas reciben en cualquier medio en el que se imprimen tus anuncios o links. Es una medida muy estandarizada y relevante que nos permite ver la conversión que hay desde que el medio usado muestra nuestra página hasta que realmente los usuarios llegan a ella mediante un click. En definitiva al observarlo pasamos de mirar cuantas visitas tiene el soporte en el que nos anunciamos a realmente cuantas de estas captamos para nosotros.</p>
<p>CTR = Clicks / Impresiones</p>
<p>Un medio de marketing Online a medida que evoluciona mejora sus KPI (Key Performance Indicators) dándonos una información cada vez más valiosa. Antaño se compraban banners por meses o semanas de permanencia en la página, se evolucionó a comprar impresiones de los banners y más adelante a medir el CTR que estos producían contando así visitas reales que llegaban a nuestras páginas. El último paso de este proceso sería hablar directamente de ratios de conversión a lead, adquisición, etc.</p>
<p>El SEO es sin duda un canal del marketing online (más o menos importante dependiendo de cada web) y como tal la evolución de sus KPI dependerá de lo que lo profesionalicemos. Sin embargo, mientras que en otros canales de marketing online dispondremos de forma fácil de valores tan básicos como &#8220;impresiones&#8221; y &#8220;CTR&#8221; en SEO estos valores NUNCA vamos a conocerlos&#8230; Como no tenemos control sobre los SERPS (Search engine results pages) de google tan solo disponemos de número de clicks lo que nos priva de una información vital a la hora de tomar decisiones.</p>
<p>En otro post de este blog comentaba como estimar el volumen de trafico potencial de una keyword en SEO. Ese mismo texto debería servirnos para acercarnos lo máximo posible a las impresiones que va un SERP de una keyword concreta.</p>
<p>El tema de las visitas globales de un SERP no creo que pueda mejorarse demasiado, tenemos esas herramientas para estimar los volúmenes y tenemos que basarnos en algo. En cuanto al CTR en el mismo post se enuncian unos CTR según la posición de tu web en el SERP de google. Por desgracia esto no está tan aceptado y existen distintas versiones sobre cual es el CTR de los links de estas páginas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spartan-code.com/blog/seo/google-ctr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seo On Page: Optimización Semántica y HTML</title>
		<link>http://www.spartan-code.com/blog/seo/seo-on-page-optimizacion-semantica-y-html/</link>
		<comments>http://www.spartan-code.com/blog/seo/seo-on-page-optimizacion-semantica-y-html/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 19:26:49 +0000</pubDate>
		<dc:creator>Pirata21</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[semantica]]></category>

		<guid isPermaLink="false">http://www.spartan-code.com/blog/?p=76</guid>
		<description><![CDATA[¿Qué es html semántico? ¿No es todo el html igual? Cuando hablamos de html semántico no nos referimos a ninguna nueva tecnología, ni siquiera aportamos ninguna regla nueva al html. Simplemente nos referimos a una página web en la que la estructura html está bien hecha, aprovechando la semántica que brinda el html, y por [...]]]></description>
			<content:encoded><![CDATA[<p>¿Qué es html semántico? ¿No es todo el html igual? Cuando hablamos de html semántico no nos referimos a ninguna nueva tecnología, ni siquiera aportamos ninguna regla nueva al html. Simplemente nos referimos a una página web en la que la estructura html está bien hecha, aprovechando la semántica que brinda el html, y por tanto dota por si sola a los contenidos de significado.</p>
<p>En las especificaciones html del W3C se nos indica una colección de etiquetas que podemos usar a la hora de generar nuestra web. Pero estas etiquetas historicamente se han usado más por la apariencia que adquirían en la pantalla de los navegadores que por su significado real. Así, la web vivió muchos años con maquetas llenas de tablas y atributos que permitían a los diseñadores y maquetadores colocar cada elemento donde les apetecía.</p>
<p>Más adelante, cuando el uso del css 2.1 empezó a hacerse común estas tablas pasaron a ser sustituidas por divs, un elementeo sin ningún significado semántico que solo debe usarse como bloque agrupador de otros.</p>
<p>El html semántico se hace posible en un tiempo en el que la información sobre el propio html y el css en los distintos navegadores ha llegado a ser tan completa que nos permite, con algo de experiencia, empezar a preocuparnos por que nuestro código use realmente las etiquetas html que aportan al contenido el significado real que tienen. En una página con html semántico las tablas solo tienen sentido para mostrar datos tabulados, los divs solo se usan como bloques contenedores como pueden ser la cabecera o pie de la página, la barra lateral, etc&#8230; El resto de elementos deben incluirse con las etiquetas html que los representan: titulares, parrafos, listas, citas, estilos de letra, etc&#8230;</p>
<p>Seguidamente una mini guía muy básica de como representar con etiquetas html distintos elementos en una web.</p>
<p>Bloques bien diferenciados en la página  (Cabecera, barra lateral, etc&#8230; ) : Único caso en el que contendremos los elementos dentro de una etiqueta <code>&lt;div/&gt;</code>.<br />
Titulares, titulos de sección, subtitulos : Usaremos las etiquetas <code>&lt;hX/&gt;</code> que nos permiten marcar  titulos. El titular principal de la página será la etiqueta <code>&lt;h1/&gt;</code>, los titulos de secciones los <code>&lt;h2/&gt;</code>, distintos titulos de partes del contenido los <code>&lt;h3/&gt;</code>, subtutitulos <code>&lt;h4/&gt;</code>, etc&#8230; y así hasta el nivel de títulos que necesitemos.<br />
Menús, Pestañas, listas de links, footers de links, etc. : Usaremos las etiquetas de listado no numerado <code>&lt;ul/&gt;</code> para contener el elemento y luego para cada link usaremos <code>&lt;li&gt;&lt;a/&gt;&lt;li&gt;</code> marcando que cada link es en realidad un elemento de listado que solo contiene un link.<br />
Contenido : Para redactar el contenido debemos usar etiquetas enfunción de lo escrito en el contenido. Para parrafos normales, usaremos <code>&lt;p/&gt;</code>para cada parrafo. Para listados ordenados <code>&lt;ol/&gt;</code>, sin orden definido <code>&lt;ul/&gt;</code>. Aparte tenemos la posibilidad de usar otras etiquetas para contenidos especiales: <code>&lt;pre/&gt;</code>, <code>&lt;blockquote/&gt;</code>, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spartan-code.com/blog/seo/seo-on-page-optimizacion-semantica-y-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convertir un mes a cadena de texto sin usar switch(PHP)</title>
		<link>http://www.spartan-code.com/blog/php/convertir-un-mes-a-cadena-de-texto-sin-usar-switchphp/</link>
		<comments>http://www.spartan-code.com/blog/php/convertir-un-mes-a-cadena-de-texto-sin-usar-switchphp/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 13:51:11 +0000</pubDate>
		<dc:creator>Pirata21</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[mes a texto]]></category>
		<category><![CDATA[strings]]></category>

		<guid isPermaLink="false">http://www.spartan-code.com/blog/?p=75</guid>
		<description><![CDATA[Cuando necesitamos mostrar un mes en formato de texto, generalmente lo que hacemos es un gran array con los meses y luego los recoreremos todos con un switch para ver el mes correspondiente y que nos devuelva el valor en texto. Algo como esto: $now = time&#40;&#41;; &#40;isset&#40;$_GET&#91;&#39;m&#39;&#93;&#41;&#41; ? $monthnum = $_GET&#91;&#39;m&#39;&#93; : $monthnum = [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando necesitamos mostrar un mes en formato de texto, generalmente lo que hacemos es un gran array con los meses y luego los recoreremos todos con un switch para ver el mes correspondiente y que nos devuelva el valor en texto. Algo como esto:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$now</span> <span class="sy0">=</span> <span class="kw3">time</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#40;</span><span class="kw3">isset</span><span class="br0">&#40;</span><span class="re1">$_GET</span><span class="br0">&#91;</span><span class="st0">&#39;m&#39;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> ? <span class="re1">$monthnum</span> <span class="sy0">=</span> <span class="re1">$_GET</span><span class="br0">&#91;</span><span class="st0">&#39;m&#39;</span><span class="br0">&#93;</span> <span class="sy0">:</span> <span class="re1">$monthnum</span> <span class="sy0">=</span> <span class="kw3">date</span><span class="br0">&#40;</span><span class="st0">&quot;m&quot;</span><span class="sy0">,</span> <span class="re1">$now</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$nextmonth</span> <span class="sy0">=</span> <span class="re1">$monthnum</span> <span class="sy0">+</span> <span class="nu0">1</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">switch</span><span class="br0">&#40;</span><span class="re1">$nextmonth</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;01&quot;</span> <span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$stringmonth</span> <span class="sy0">=</span> <span class="st0">&quot;January&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;02&quot;</span> <span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$stringmonth</span> <span class="sy0">=</span> <span class="st0">&quot;February&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;03&quot;</span> <span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$stringmonth</span> <span class="sy0">=</span> <span class="st0">&quot;March&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;04&quot;</span> <span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$stringmonth</span> <span class="sy0">=</span> <span class="st0">&quot;April&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;05&quot;</span> <span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$stringmonth</span> <span class="sy0">=</span> <span class="st0">&quot;May&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;06&quot;</span> <span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$stringmonth</span> <span class="sy0">=</span> <span class="st0">&quot;June&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;07&quot;</span> <span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$stringmonth</span> <span class="sy0">=</span> <span class="st0">&quot;July&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;08&quot;</span> <span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$stringmonth</span> <span class="sy0">=</span> <span class="st0">&quot;August&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;09&quot;</span> <span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$stringmonth</span> <span class="sy0">=</span> <span class="st0">&quot;September&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;10&quot;</span> <span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$stringmonth</span> <span class="sy0">=</span> <span class="st0">&quot;October&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;11&quot;</span> <span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$stringmonth</span> <span class="sy0">=</span> <span class="st0">&quot;November&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;12&quot;</span> <span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$stringmonth</span> <span class="sy0">=</span> <span class="st0">&quot;December&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Pero la forma mas facil es generar un nuevo date y que nos devuelva el mes automaticamente, entonces todo ese codigo largo se trnansformaria en estas sencillas lineas de codigo</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">public</span> <span class="kw2">function</span> formatMonth<span class="br0">&#40;</span><span class="re1">$mNumber</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$monthnum</span> <span class="sy0">=</span> <span class="re1">$mNumber</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$stringmonth</span> <span class="sy0">=</span> <span class="kw3">date</span><span class="br0">&#40;</span><span class="st0">&quot;F&quot;</span><span class="sy0">,</span> <span class="kw3">mktime</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="br0">&#40;</span><span class="re1">$monthnum</span> <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> <span class="re1">$stringmonth</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.spartan-code.com/blog/php/convertir-un-mes-a-cadena-de-texto-sin-usar-switchphp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leer los metatags de un sitio externos con php</title>
		<link>http://www.spartan-code.com/blog/php/leer-los-metatags-de-un-sitio-externos-con-php/</link>
		<comments>http://www.spartan-code.com/blog/php/leer-los-metatags-de-un-sitio-externos-con-php/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 17:32:30 +0000</pubDate>
		<dc:creator>Pirata21</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[leer tags]]></category>
		<category><![CDATA[metatags]]></category>

		<guid isPermaLink="false">http://www.spartan-code.com/blog/?p=74</guid>
		<description><![CDATA[Leer los metatags desde una url y salvarlos en un Array con PHP: &#60;?php /** &#160;* initMetatags &#160;* @param URL &#160; &#160; &#160; &#160; * Devuelve un array con los metatags con su respectivo valor &#160;*/ &#160;function initMetatags&#40;$url&#41; &#160;&#123; &#160; $result = false; &#160; &#160; &#160; $contents = $this-&#62;getUrlContents&#40;$url, 5&#41;; &#160; &#160; if &#40;isset&#40;$contents&#41; &#38;&#38; [...]]]></description>
			<content:encoded><![CDATA[<p>Leer los metatags desde una url y salvarlos en un Array con PHP:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* initMetatags</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* @param URL</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * Devuelve un array con los metatags con su respectivo valor</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">function</span> initMetatags<span class="br0">&#40;</span><span class="re1">$url</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$result</span> <span class="sy0">=</span> <span class="kw2">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$contents</span> <span class="sy0">=</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">getUrlContents</span><span class="br0">&#40;</span><span class="re1">$url</span><span class="sy0">,</span> <span class="nu0">5</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">isset</span><span class="br0">&#40;</span><span class="re1">$contents</span><span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">is_string</span><span class="br0">&#40;</span><span class="re1">$contents</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$title</span> <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$metaTags</span> <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw3">preg_match</span><span class="br0">&#40;</span><span class="st0">&#39;/&lt;title&gt;([^&gt;]*)&lt;<span class="es0">\/</span>title&gt;/si&#39;</span><span class="sy0">,</span> <span class="re1">$contents</span><span class="sy0">,</span> <span class="re1">$match</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">isset</span><span class="br0">&#40;</span><span class="re1">$match</span><span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">is_array</span><span class="br0">&#40;</span><span class="re1">$match</span><span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">count</span><span class="br0">&#40;</span><span class="re1">$match</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$title</span> <span class="sy0">=</span> <span class="kw3">strip_tags</span><span class="br0">&#40;</span><span class="re1">$match</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$contents</span> <span class="sy0">=</span> <span class="kw3">str_replace</span><span class="br0">&#40;</span><span class="st0">&#39;scheme=&quot;&quot;&#39;</span><span class="sy0">,</span> <span class="st0">&quot;&quot;</span><span class="sy0">,</span> <span class="re1">$contents</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw3">preg_match_all</span><span class="br0">&#40;</span><span class="st0">&#39;/&lt;[<span class="es0">\s</span>]*meta[<span class="es0">\s</span>]*name=&quot;?&#39;</span> <span class="sy0">.</span> <span class="st0">&#39;([^&gt;&quot;]*)&quot;?[<span class="es0">\s</span>]*&#39;</span> <span class="sy0">.</span> <span class="st0">&#39;content=&quot;?([^&gt;&quot;]*)&quot;?[<span class="es0">\s</span>]*[<span class="es0">\/</span>]?[<span class="es0">\s</span>]*&gt;/si&#39;</span><span class="sy0">,</span> <span class="re1">$contents</span><span class="sy0">,</span> <span class="re1">$match</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">isset</span><span class="br0">&#40;</span><span class="re1">$match</span><span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">is_array</span><span class="br0">&#40;</span><span class="re1">$match</span><span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">count</span><span class="br0">&#40;</span><span class="re1">$match</span><span class="br0">&#41;</span> <span class="sy0">==</span> <span class="nu0">3</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$originals</span> <span class="sy0">=</span> <span class="re1">$match</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$names</span> <span class="sy0">=</span> <span class="re1">$match</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$values</span> <span class="sy0">=</span> <span class="re1">$match</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">count</span><span class="br0">&#40;</span><span class="re1">$originals</span><span class="br0">&#41;</span> <span class="sy0">==</span> <span class="kw3">count</span><span class="br0">&#40;</span><span class="re1">$names</span><span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">count</span><span class="br0">&#40;</span><span class="re1">$names</span><span class="br0">&#41;</span> <span class="sy0">==</span> <span class="kw3">count</span><span class="br0">&#40;</span><span class="re1">$values</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$metaTags</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">for</span> <span class="br0">&#40;</span><span class="re1">$i</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">,</span> <span class="re1">$limiti</span><span class="sy0">=</span><span class="kw3">count</span><span class="br0">&#40;</span><span class="re1">$names</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="re1">$i</span> <span class="sy0">&lt;</span> <span class="re1">$limiti</span><span class="sy0">;</span> <span class="re1">$i</span><span class="sy0">++</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re1">$metaTags</span><span class="br0">&#91;</span><span class="kw3">strtolower</span><span class="br0">&#40;</span><span class="re1">$names</span><span class="br0">&#91;</span><span class="re1">$i</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#93;</span> <span class="sy0">=</span> &nbsp;<span class="re1">$values</span><span class="br0">&#91;</span><span class="re1">$i</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$metaTags</span><span class="br0">&#91;</span><span class="st0">&#39;title&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> &nbsp;<span class="re1">$title</span> <span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="co1">//$metaTags.push();</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$result</span> <span class="sy0">=</span> &nbsp;<span class="re1">$metaTags</span> <span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> <span class="re1">$result</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* getUrlContents</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* Obtain the code of the website to read the metadata</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* @return String Code</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* @param url</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* @param maximumRedirections </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* @param currentRedirection</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">function</span> getUrlContents<span class="br0">&#40;</span><span class="re1">$url</span><span class="sy0">,</span> <span class="re1">$maximumRedirections</span> <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">,</span> <span class="re1">$currentRedirection</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$result</span> <span class="sy0">=</span> <span class="kw2">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">ini_set</span><span class="br0">&#40;</span><span class="st0">&quot;user_agent&quot;</span><span class="sy0">,</span> <span class="st0">&quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$contents</span> <span class="sy0">=</span> <span class="sy0">@</span><span class="kw3">file_get_contents</span><span class="br0">&#40;</span><span class="re1">$url</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">isset</span><span class="br0">&#40;</span><span class="re1">$contents</span><span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">is_string</span><span class="br0">&#40;</span><span class="re1">$contents</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw3">preg_match_all</span><span class="br0">&#40;</span><span class="st0">&#39;/&lt;[<span class="es0">\s</span>]*meta[<span class="es0">\s</span>]*http-equiv=&quot;?REFRESH&quot;?&#39;</span> <span class="sy0">.</span> <span class="st0">&#39;[<span class="es0">\s</span>]*content=&quot;?[0-9]*;[<span class="es0">\s</span>]*URL[<span class="es0">\s</span>]*=[<span class="es0">\s</span>]*([^&gt;&quot;]*)&quot;?&#39;</span> <span class="sy0">.</span> <span class="st0">&#39;[<span class="es0">\s</span>]*[<span class="es0">\/</span>]?[<span class="es0">\s</span>]*&gt;/si&#39;</span><span class="sy0">,</span> <span class="re1">$contents</span><span class="sy0">,</span> <span class="re1">$match</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">isset</span><span class="br0">&#40;</span><span class="re1">$match</span><span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">is_array</span><span class="br0">&#40;</span><span class="re1">$match</span><span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">count</span><span class="br0">&#40;</span><span class="re1">$match</span><span class="br0">&#41;</span> <span class="sy0">==</span> <span class="nu0">2</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">count</span><span class="br0">&#40;</span><span class="re1">$match</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="sy0">==</span> <span class="nu0">1</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="kw3">isset</span><span class="br0">&#40;</span><span class="re1">$maximumRedirections</span><span class="br0">&#41;</span> <span class="sy0">||</span> <span class="re1">$currentRedirection</span> <span class="sy0">&lt;</span> <span class="re1">$maximumRedirections</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">return</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">getUrlContents</span><span class="br0">&#40;</span><span class="re1">$match</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="re1">$maximumRedirections</span><span class="sy0">,</span> <span class="sy0">++</span><span class="re1">$currentRedirection</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$result</span> <span class="sy0">=</span> <span class="kw2">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$result</span> <span class="sy0">=</span> <span class="re1">$contents</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span> &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> <span class="re1">$contents</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Llamamos a la funcion</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$result</span> <span class="sy0">=</span> initMetatags<span class="br0">&#40;</span><span class="st0">&quot;http://www.spartan-code.com&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="re1">$result</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Salida:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">Array</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#91;</span>title<span class="br0">&#93;</span> <span class="sy0">=&gt;</span> Spartan Code <span class="sy0">-</span> Web Applications <span class="sy0">&amp;</span> Software development</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#91;</span>metaTags<span class="br0">&#93;</span> <span class="sy0">=&gt;</span> <span class="kw3">Array</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>robots<span class="br0">&#93;</span> <span class="sy0">=&gt;</span> <span class="kw3">Array</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>html<span class="br0">&#93;</span> <span class="sy0">=&gt;</span> <span class="sy0">&lt;</span>meta name<span class="sy0">=</span><span class="st0">&quot;robots&quot;</span> content<span class="sy0">=</span><span class="st0">&quot;index, follow&quot;</span> <span class="sy0">/&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>value<span class="br0">&#93;</span> <span class="sy0">=&gt;</span> index<span class="sy0">,</span> follow</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>keywords<span class="br0">&#93;</span> <span class="sy0">=&gt;</span> <span class="kw3">Array</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>html<span class="br0">&#93;</span> <span class="sy0">=&gt;</span> <span class="sy0">&lt;</span>meta name<span class="sy0">=</span><span class="st0">&quot;keywords&quot;</span> content<span class="sy0">=</span><span class="st0">&quot;diseño web, empresa de diseño web, desarrollo de sitios web, sitios web corporativos, E-marketing, Posicionamiento y Marketing en Buscadores, Comercio Electrónico&quot;</span> &nbsp;<span class="sy0">/&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>value<span class="br0">&#93;</span> <span class="sy0">=&gt;</span> dise�o web<span class="sy0">,</span> empresa de dise�o web<span class="sy0">,</span> desarrollo de sitios web<span class="sy0">,</span> sitios web corporativos<span class="sy0">,</span> E<span class="sy0">-</span>marketing<span class="sy0">,</span> Posicionamiento y Marketing en Buscadores<span class="sy0">,</span> Comercio Electr�nico</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>description<span class="br0">&#93;</span> <span class="sy0">=&gt;</span> <span class="kw3">Array</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>html<span class="br0">&#93;</span> <span class="sy0">=&gt;</span> <span class="sy0">&lt;</span>meta name<span class="sy0">=</span><span class="st0">&quot;description&quot;</span> content<span class="sy0">=</span><span class="st0">&quot;Diseño Web. Resolvemos toda tu Estrategia Online. Te desafiamos a que encuentres mejores propuestas!&quot;</span> &nbsp;<span class="sy0">/&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>value<span class="br0">&#93;</span> <span class="sy0">=&gt;</span> Dise�o Web<span class="sy0">.</span> Resolvemos toda tu Estrategia Online<span class="sy0">.</span> Te desafiamos a que encuentres mejores propuestas<span class="sy0">!</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.spartan-code.com/blog/php/leer-los-metatags-de-un-sitio-externos-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	<!-- google_ad_section_end --><!-- google_ad_section_start(weight=ignore) --></channel>
</rss>

