<?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>emmgfx &#187; PHP</title>
	<atom:link href="http://www.emm-gfx.net/categoria/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.emm-gfx.net</link>
	<description>Y ahora sin más; construye y destruye.</description>
	<lastBuildDate>Sun, 22 Jan 2012 11:24:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PHP: Ordenar array por el valor de un campo</title>
		<link>http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/</link>
		<comments>http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 08:20:28 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[burbuja]]></category>
		<category><![CDATA[campo]]></category>
		<category><![CDATA[ordenar]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=1592</guid>
		<description><![CDATA[Recomiendo investigar: usort en php.net, bubble sort, ordenamiento por burbuja en wikipedia y la fuente. function orderMultiDimensionalArray ($toOrderArray, $field, $inverse = false) { $position = array(); $newRow = array(); foreach ($toOrderArray as $key => $row) { $position[$key] = $row[$field]; $newRow[$key] = $row; } if ($inverse) { arsort($position); } else { asort($position); } $returnArray = array(); [...]]]></description>
			<content:encoded><![CDATA[<p>Recomiendo investigar: <a href="http://es.php.net/usort">usort en php.net</a>, <a href="http://www.metalshell.com/source_code/118/Bubble_Sort.html" title="bubble sort">bubble sort</a>, <a href="http://es.wikipedia.org/wiki/Ordenamiento_de_burbuja">ordenamiento por burbuja en wikipedia</a> y la <a href="http://notasweb.com/articulo/php/ordenar-array-multidimensional-por-un-campo-con-php.html">fuente</a>.</p>
<pre>function orderMultiDimensionalArray ($toOrderArray, $field, $inverse = false) {
    $position = array();
    $newRow = array();
    foreach ($toOrderArray as $key => $row) {
            $position[$key]  = $row[$field];
            $newRow[$key] = $row;
    }
    if ($inverse) {
        arsort($position);
    }
    else {
        asort($position);
    }
    $returnArray = array();
    foreach ($position as $key => $pos) {
        $returnArray[] = $newRow[$key];
    }
    return $returnArray;
}</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/" title="Comprobar si un directorio está vacío con PHP">Comprobar si un directorio está vacío con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/07/ucfirst-de-php-en-javascript/" title="ucfirst de PHP en Javascript">ucfirst de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/06/comprobar-validez-de-un-dominio-con-php-2/" title="Comprobar validez de un dominio con PHP (2)">Comprobar validez de un dominio con PHP (2)</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2010/01/str_replace-de-php-en-javascript-2/" title="La función str_replace() de PHP en Javascript">La función str_replace() de PHP en Javascript</a> (1)</li><li><a href="http://www.emm-gfx.net/2010/01/instalar-mcrypt-en-ubuntu-8-04-3-server-lts/" title="Instalar mcrypt en Ubuntu 8.04.3 server LTS">Instalar mcrypt en Ubuntu 8.04.3 server LTS</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/" title="RMDIR recursivo en PHP">RMDIR recursivo en PHP</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comprobar si un directorio está vacío con PHP</title>
		<link>http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/</link>
		<comments>http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/#comments</comments>
		<pubDate>Sat, 03 Sep 2011 18:42:39 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[directorio]]></category>
		<category><![CDATA[is_empty]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=1588</guid>
		<description><![CDATA[$directorio = '/tu/ruta/'; $is_empty = (bool) (count(scandir($directorio)) == 2); $is_empty será true o false según si está vacío o no. Articulos relacionadosPHP: Ordenar array por el valor de un campo (0)ucfirst de PHP en Javascript (0)Comprobar validez de un dominio con PHP (2) (0)Enviar el log de errores de PHP por email (0)Obtener la URL [...]]]></description>
			<content:encoded><![CDATA[<pre>$directorio = '/tu/ruta/';
$is_empty = (bool) (count(scandir($directorio)) == 2);</pre>
<p><code>$is_empty</code> será <code>true</code> o <code>false</code> según si está vacío o no.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/07/ucfirst-de-php-en-javascript/" title="ucfirst de PHP en Javascript">ucfirst de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/06/comprobar-validez-de-un-dominio-con-php-2/" title="Comprobar validez de un dominio con PHP (2)">Comprobar validez de un dominio con PHP (2)</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2010/01/str_replace-de-php-en-javascript-2/" title="La función str_replace() de PHP en Javascript">La función str_replace() de PHP en Javascript</a> (1)</li><li><a href="http://www.emm-gfx.net/2010/01/instalar-mcrypt-en-ubuntu-8-04-3-server-lts/" title="Instalar mcrypt en Ubuntu 8.04.3 server LTS">Instalar mcrypt en Ubuntu 8.04.3 server LTS</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/" title="RMDIR recursivo en PHP">RMDIR recursivo en PHP</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comprobar validez de un dominio con PHP (2)</title>
		<link>http://www.emm-gfx.net/2011/06/comprobar-validez-de-un-dominio-con-php-2/</link>
		<comments>http://www.emm-gfx.net/2011/06/comprobar-validez-de-un-dominio-con-php-2/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 07:58:37 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[checkdnsrr]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[dominio]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[Registro]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=1540</guid>
		<description><![CDATA[Hace un año y medio más o menos escribí un articulo sobre como comprobar que un dominio existía. Pero ahí lo explicaba con una función hecha a mano. Ahora acabo de ver que también se puede hacer con una función nativa y resulta mucho más sencillo. Además es capaz de comprobar un tipo de registro [...]]]></description>
			<content:encoded><![CDATA[<p>Hace un año y medio más o menos escribí un <a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/">articulo sobre como comprobar que un dominio existía</a>. Pero ahí lo explicaba con una función hecha a mano. Ahora acabo de ver que también se puede hacer con una función nativa y resulta mucho más sencillo. Además es capaz de comprobar un tipo de registro especifico (A, MX, NS, SOA, PTR, CNAME, AAAA, A6, SRV, NAPTR, TXT o ANY).<span id="more-1540"></span></p>
<pre>checkdnsrr('www.viciana.me') // Devuelve true
checkdnsrr('www.brrrr.es') // Devuelve false</pre>
<p>Y un ejemplo de uso práctico para ver como se podría comprobar si un email existe (hasta cierto punto).</p>
<pre>$mail = 'josep@viciana.me';
$dominio = explode('@',$mail);
if(checkdnsrr($dominio[1])){
	echo 'existe';
}else{
	echo 'no existe';
}</pre>
<p>Si interesa saber más sobre la comprobación de registros especificos, recomiendo leer la <a href="http://es2.php.net/checkdnsrr">documentación oficial</a>.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/" title="Comprobar si un directorio está vacío con PHP">Comprobar si un directorio está vacío con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/07/ucfirst-de-php-en-javascript/" title="ucfirst de PHP en Javascript">ucfirst de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2010/02/servidor-dedicado-con-ip-dinamica/" title="Servidor dedicado con IP dinámica.">Servidor dedicado con IP dinámica.</a> (5)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2010/01/str_replace-de-php-en-javascript-2/" title="La función str_replace() de PHP en Javascript">La función str_replace() de PHP en Javascript</a> (1)</li><li><a href="http://www.emm-gfx.net/2010/01/instalar-mcrypt-en-ubuntu-8-04-3-server-lts/" title="Instalar mcrypt en Ubuntu 8.04.3 server LTS">Instalar mcrypt en Ubuntu 8.04.3 server LTS</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2011/06/comprobar-validez-de-un-dominio-con-php-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enviar el log de errores de PHP por email</title>
		<link>http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/</link>
		<comments>http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 12:29:15 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Control de errores]]></category>
		<category><![CDATA[Función]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=1125</guid>
		<description><![CDATA[Tener noticias de los errores que puedan surgir en una web, sobretodo cuando acaba de ser puesta en producción y necesita una atención especial para confirmar que todo funciona bien, o cuando se acaba de realizar algún cambio en el servidor, puede ser un punto muy importante. Para recibir los errores por email, hay que [...]]]></description>
			<content:encoded><![CDATA[<p>Tener noticias de los errores que puedan surgir en una web, sobretodo cuando acaba de ser puesta en producción y necesita una atención especial para confirmar que todo funciona bien, o cuando se acaba de realizar algún cambio en el servidor, puede ser un punto muy importante.</p>
<p>Para recibir los errores por email, hay que hacer dos cosas:<span id="more-1125"></span></p>
<ol>
<li>Preparar una función con las instrucciones en caso de ocurrir un error.</li>
<li>Decirle a PHP que tiene que ejecutar la función creada cuando sucedan errores.</li>
</ol>
<p>La primera parte, la función, sería algo así</p>
<pre>function errorPersonalizado($numeroerror, $cadenaerror){
    echo "&lt;div&gt;&lt;strong&gt;Error:&lt;/strong&gt; [$numeroerror] $cadenaerror&lt;/div&gt;";
    error_log("Error: [$numeroerror] $cadenaerror",1,"webmaster@elsitio.net","From: logerrores@elsitio.net");
}
</pre>
<p>La segunda parte, donde se le dice a PHP que tiene que ejecutar la función <code>errorPersonalizado</code> cuando ocurran errores, es sólo una linea:</p>
<pre>set_error_handler("errorPersonalizado");</pre>
<p>Por defecto, <code>set_error_handler</code> ejecuta <code>error_log()</code>.</p>
<p>Personalmente, creo que la mejor idea para controlar el log de errores en cada caso es&#8230;</p>
<ul>
<li>Para webs/aplicaciones <strong>en producción: No mostrar los errores en la misma página</strong>, por seguridad; y guardarlos en un archivo de logs que vaya &#8220;rotando&#8221; para que no acabe dando problemas cuando alcance tamaños complicados para el sistema de archivos. Los errores se pueden ocultar usando <code>error_reporting(0)</code>.</li>
<li><strong>Cuando se está desarrollando</strong>, lo más cómodo es <strong>tener los errores bien visibles</strong>, que aparezcan en la misma página cuando sucedan (este es el comportamiento por defecto).</li>
<li>Cuando cualquier tipo de error puede ser importante, lo mejor es utilizar este pequeño truco para enviar los errores por email y así mantenernos informados con más frecuencia, normalmente esto no es necesario cuando la programación está en desarrollo.</li>
</ul>
<p>Más información en la <a href="http://es.php.net/manual/en/ref.errorfunc.php" target="_blank">documentación oficial de PHP</a> y en <a href="http://www.w3schools.com/php/php_error.asp" target="_blank">w3schools</a>.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 105px; width: 1px; height: 1px;">http://www.w3schools.com/php/php_error.asp</div>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/" title="Recursividad en mkdir de PHP">Recursividad en mkdir de PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/07/eliminar-caracteres-raros-de-una-cadena-con-php/" title="Eliminar caracteres raros de una cadena con PHP">Eliminar caracteres raros de una cadena con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/" title="Comprobar si un directorio está vacío con PHP">Comprobar si un directorio está vacío con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/07/ucfirst-de-php-en-javascript/" title="ucfirst de PHP en Javascript">ucfirst de PHP en Javascript</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Obtener la URL que se esta visitando con PHP</title>
		<link>http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/</link>
		<comments>http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 09:40:47 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Función]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[HTTPS]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=1045</guid>
		<description><![CDATA[Con esta función, se puede saber la URL que se está visitando&#8230; y no hay nada más que decir, sólo la función y un ejemplo. function selfURL(){ $s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : ""; $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s; $port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]); return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI']; [...]]]></description>
			<content:encoded><![CDATA[<p>Con esta función, se puede saber la URL que se está visitando&#8230; y no hay nada más que decir, sólo la función y un ejemplo.</p>
<pre>function selfURL(){
   $s        = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
   $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s;
   $port     = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
   return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI'];
}
function strleft($s1, $s2){
   return substr($s1, 0, strpos($s1, $s2));
}</pre>
<p>En realidad son dos, pero van juntas. Y para usarla es bastante sencillo.</p>
<pre>
echo selfURL(); /* http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/ */
</pre>
<p>Puede no parecer demasiado util, pero a mi me ha venido bien varias veces.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/05/php-cookies/" title="PHP: Cookies">PHP: Cookies</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/" title="Encontrar todos los links de una página con PHP">Encontrar todos los links de una página con PHP</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comprobar DNI / NIF con PHP</title>
		<link>http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/</link>
		<comments>http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 22:28:27 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[DNI]]></category>
		<category><![CDATA[Función]]></category>
		<category><![CDATA[NIF]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=964</guid>
		<description><![CDATA[Esta función es capaz de comprobar si el NIF tiene un formato correcto o no, es decir, si la letra indicada es la que corresponde a la cadena de 8 números. Que devuelva un resultado positivo no quiere decir que sea un número que exista, sólo que el formato es correcto. function comprobar_nif($nif){ $letras = [...]]]></description>
			<content:encoded><![CDATA[<p>Esta función es capaz de comprobar si el NIF tiene un formato correcto o no, es decir, si la letra indicada es la que corresponde a la cadena de 8 números. Que devuelva un resultado positivo no quiere decir que sea un número que exista, sólo que el formato es correcto.<span id="more-964"></span></p>
<pre>function comprobar_nif($nif){
   $letras = explode(',','T,R,W,A,G,M,Y,F,P,D,X,B,N,J,Z,S,Q,V,H,L,C,K,E');
   if (
      (strlen($nif)!=9) ||
      (!is_long($entero=intval(substr($nif,0,8)))) ||
      (!in_array($letra=strtoupper(substr($nif,8,1)),$letras)) ||
      ($letra!=$letras[$entero%23])
      ){
         return false;
      }else{
         return true;
      }
}
</pre>
<p>Si le indicamos <code>00000000T</code> devolverá <code>true</code>, aunque no creo que exista (este es el número que uso para hacer pruebas). Y creo que el uso es bastante sencillo, sería algo como esto</p>
<pre>if(comprobar_nif('00000000T')){
   echo 'Correcto';
}else{
   echo 'Incorrecto';
}
</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/" title="Recursividad en mkdir de PHP">Recursividad en mkdir de PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/07/eliminar-caracteres-raros-de-una-cadena-con-php/" title="Eliminar caracteres raros de una cadena con PHP">Eliminar caracteres raros de una cadena con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/" title="Comprobar si un directorio está vacío con PHP">Comprobar si un directorio está vacío con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/07/ucfirst-de-php-en-javascript/" title="ucfirst de PHP en Javascript">ucfirst de PHP en Javascript</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mostrar una fecha sin mostrarla, de forma amigable, con PHP</title>
		<link>http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/</link>
		<comments>http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 19:16:05 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[nicetime]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=874</guid>
		<description><![CDATA[Mostrar el tiempo de forma amigable, como Facebook o Twitter es una buena idea, sobretodo sobre todo si el lapso de tiempo entre el actual y el que se quiere mostrar no es demasiado largo. Si en vez de mostrar &#8220;14/11/1988 10:30&#8243; mostramos &#8220;Hace 21 años&#8221; puede parecer un poco exagerado y en ese caso [...]]]></description>
			<content:encoded><![CDATA[<p><a class="fancy" href="http://www.emm-gfx.net/wp-content/uploads/2010/02/tiempo.gif">Mostrar el tiempo de forma amigable, como Facebook o Twitter</a> es una buena idea, <span style="text-decoration: line-through;">sobretodo</span> sobre todo si el lapso de tiempo entre el actual y el que se quiere mostrar no es demasiado largo. Si en vez de mostrar &#8220;14/11/1988 10:30&#8243; mostramos &#8220;Hace 21 años&#8221; puede parecer un poco exagerado y en ese caso yo mostraría algo como &#8220;Hace 21 años (el 14/11/1988)&#8221;. Pero si es algo que se actualiza con más frecuencia, como los estados de Twitter, Facebook y cualquier otra red social, donde es normal que no pasen más de 4 horas entre cada actualización y muy pocas veces pasa de un día, es mejor poner &#8220;Hace 34 minutos&#8221; que poner la hora en que se hizo, resulta más entendible para el usuario y da una imagen de dinamismo que el modo convencional no es capaz. Y el motivo es sencillo, cuando el usuario ve &#8220;a las 13:30&#8243; lo que hace es mirar la hora actual y calcular el lapso de tiempo&#8230; es decir, que mostrando la fecha de forma amigable lo que hacemos es evitarle al usuario la necesidad de pensar.<span id="more-874"></span></p>
<p>En Intenta han publicado <a href="http://www.webintenta.com/funcion-para-determinar-el-tiempo-transcurrido-en-PHP.html">su propia versión</a> del <em>snippet</em> que iba a publicar yo hoy mismo &#8211; <span style="color: #888888;">se me ha adelantado por unas horas&#8230;</span> &#8211; , pero a su manera.  Y como el mío es algo diferente &#8211; <span style="color: #888888;">los dos parten de la misma función <code>nicetime()</code></span> &#8211; lo publico igualmente.</p>
<p>En cualquier caso, la función original la escribió un tal yasmary en los <a href="http://www.php.net/manual/en/function.time.php#89415">comentarios de la documentación</a> de php, y esto es una adaptación para que se pueda utilizar tanto con fechas formateadas como con el <em>epoch time</em> de <em>unix</em> y <strong>en castellano</strong>.</p>
<p>Para utilizarla, sería algo como esto:</p>
<pre>echo nicetime('1988-11-14');
# Mostraría "Hace 21 años"
echo nicetime('2010-02-12');
# Mostraría "Dentro de 2 días"
echo nicetime('1234567890');
# Mostraría "Hace 1 año";
</pre>
<p>Esta es <strong>la función</strong>, y el ejemplo de resultado se puede ver a la derecha (en el globo azul de Twitter).</p>
<pre>function nicetime($date){
   if(empty($date)){
      return "Fecha no especificada";
   }
   $periods    = array("segundo", "minuto", "hora", "d&amp;iacute;a", "semana", "mese", "a&amp;ntilde;o", "d&amp;eacute;cada");
   $lengths    = array("60","60","24","7","4.35","12","10");

   $now            = time();
   if(is_int($date)){
      $unix_date   = $date;
   }else{
      $unix_date   = strtotime($date);
   }

   if(empty($unix_date)) {
      return "Fecha incorrecta";
   }
   if($now &gt; $unix_date) {
      $difference  = $now - $unix_date;
      $tense       = "Hace ";
   }else{
      $difference  = $unix_date - $now;
      $tense       = "Dentro de ";
   }
   for($j = 0; $difference &gt;= $lengths[$j] &amp;&amp; $j &lt; count($lengths)-1; $j++) {
      $difference /= $lengths[$j];
   }
   $difference = round($difference);
   if($difference != 1) {
      $periods[$j].= "s";
   }
   return "{$tense} $difference $periods[$j] ";
}
</pre>
<div class="cuadro-amarillo"><strong>Nota 12 mayo 2010:</strong><br />
Parece que <a href="http://alexwhinfield.com/lightweight-php-seconds-ago-script/" target="_blank">Alex Whinfield ha publicado un script parecido pero más sencillo</a>, aunque lo que más me ha llamado la atención es uno de los comentarios en que le avisan de que wordpress incluye una función para esto llamada <code>human_time_diff()</code>, de manera que algunas veces no sería necesario incluir nuestra propia función <img src='http://www.emm-gfx.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/" title="Encontrar todos los links de una página con PHP">Encontrar todos los links de una página con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/05/php-cookies/" title="PHP: Cookies">PHP: Cookies</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/" title="Comprobar si un directorio está vacío con PHP">Comprobar si un directorio está vacío con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/07/ucfirst-de-php-en-javascript/" title="ucfirst de PHP en Javascript">ucfirst de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/06/comprobar-validez-de-un-dominio-con-php-2/" title="Comprobar validez de un dominio con PHP (2)">Comprobar validez de un dominio con PHP (2)</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RMDIR recursivo en PHP</title>
		<link>http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/</link>
		<comments>http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 12:35:32 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[exec]]></category>
		<category><![CDATA[Recursividad]]></category>
		<category><![CDATA[rmdir]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=802</guid>
		<description><![CDATA[Para eliminar directorios con php se utiliza la función rmdir(), el problema es que esa función no permite borrar carpetas que contengan algo, ya sea otras carpetas vacías o archivos. Se pueden hacer funciones para eliminar carpetas y su contenido utilizando sólo php, de hecho en el manual de rmdir en php.net se pueden ver [...]]]></description>
			<content:encoded><![CDATA[<p>Para eliminar directorios con php se utiliza la función <code>rmdir()</code>, el problema es que esa función no permite borrar carpetas que contengan algo, ya sea otras carpetas vacías o archivos.</p>
<p>Se pueden hacer funciones para eliminar carpetas y su contenido utilizando sólo php, de hecho en el <a href="http://es2.php.net/rmdir">manual de rmdir en php.net</a> se pueden ver algunas en los comentarios, pero no es eso lo que me interesa. Lo que voy a explicar es cómo hacerlo utilizando comandos del sistema (en unix, los de windows no tengo ni idea).<span id="more-802"></span></p>
<p>La cosa es sencilla, para ejecutar comandos del sistema se utiliza la función <code>exec()</code> de PHP.</p>
<p>Por ejemplo:</p>
<pre>echo '&lt;ol&gt;';
if(exec('rm -frv /el/directorio/a/borrar/',$salida)){
   foreach($salida as $line){
      echo '&lt;li&gt;'.$line.'&lt;/li&gt;';
   }
}else{
   echo '&lt;li&gt;Error al eliminar archivos&lt;/li&gt;';
}
echo '&lt;/ol&gt;';</pre>
<p>Como se ve, he utilizado el comando rm con las opciones <code>-frv</code>, la <code>f</code> es para forzar (ignora archivos inexistentes), la <code>r</code> para que sea recursivo y la <code>v</code> (de verbose) para que explique lo que esta haciendo. Si queréis, en la wikipedia hay <a href="http://en.wikipedia.org/wiki/Rm_%28Unix%29">mas información</a> sobre el comando <code>rm</code>.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/" title="Recursividad en mkdir de PHP">Recursividad en mkdir de PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/" title="Comprobar si un directorio está vacío con PHP">Comprobar si un directorio está vacío con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/07/ucfirst-de-php-en-javascript/" title="ucfirst de PHP en Javascript">ucfirst de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/06/comprobar-validez-de-un-dominio-con-php-2/" title="Comprobar validez de un dominio con PHP (2)">Comprobar validez de un dominio con PHP (2)</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2010/01/str_replace-de-php-en-javascript-2/" title="La función str_replace() de PHP en Javascript">La función str_replace() de PHP en Javascript</a> (1)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comprobar la validez de un dominio con PHP</title>
		<link>http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/</link>
		<comments>http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 19:04:21 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Función]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=748</guid>
		<description><![CDATA[Una sencilla función para verificar que un nombre de dominio existe. Es la función que utilizo en saberpagerank.es para verificar que el dominio introducido es correcto, podéis encontrar una demostración de allí. function getAddrByHost($host, $timeout = 3) { $query = `nslookup -timeout=$timeout -retry=1 $host`; if(preg_match('/\nAddress: (.*)\n/', $query, $matches)){ return trim($matches[1]); }else{ return false; } return [...]]]></description>
			<content:encoded><![CDATA[<p>Una sencilla función para verificar que un nombre de dominio existe. Es la función que utilizo en <a href="http://www.saberpagerank.es">saberpagerank.es</a> para verificar que el dominio introducido es correcto, podéis encontrar una demostración de allí.</p>
<pre lang="php" line="1">
function getAddrByHost($host, $timeout = 3) {
   $query = `nslookup -timeout=$timeout -retry=1 $host`;
   if(preg_match('/\nAddress: (.*)\n/', $query, $matches)){
      return trim($matches[1]);
   }else{
      return false;
   }
   return $host;
}
</pre>
<p>Y no hay mucho más que añadir, el nombre de dominio se le pasa en el primer parámetro, es decir, para utilizar la función se haría algo así:</p>
<pre lang="php" line="1">
if(!getAddrByHost('www.dominioabsurdo.lol')){
   die('El dominio parece incorrecto <img src='http://www.emm-gfx.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> ');
}
</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/05/php-cookies/" title="PHP: Cookies">PHP: Cookies</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/" title="Encontrar todos los links de una página con PHP">Encontrar todos los links de una página con PHP</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eliminar posición de un array en PHP</title>
		<link>http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/</link>
		<comments>http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 10:08:00 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=482</guid>
		<description><![CDATA[Para borrar variables se utiliza unset(), también para eliminar posiciones de un array, pero si sólo se usa unset() la posición no se elimina del todo, sigue existiendo pero esta vacía. No sé si lo estoy explicando bien, pero con los ejemplos se entiende mejor. Es bastante sencillo, no es algo complicado de hacer, sólo [...]]]></description>
			<content:encoded><![CDATA[<p>Para borrar variables se utiliza <code>unset()</code>, también para eliminar posiciones de un array, pero si sólo se usa <code>unset()</code> la posición no se elimina del todo, <strong>sigue existiendo</strong> pero esta vacía. No sé si lo estoy explicando bien, pero con los ejemplos se entiende mejor. Es bastante sencillo, no es algo complicado de hacer, sólo hay que entenderlo.<br />
Por ejemplo, con este array:</p>
<pre lang="PHP" line="1">
$array = 'ni sus,manos son,tan blancas,ni son,blancas sus,palomas';
$array = explode(',',$array);
</pre>
<pre lang="text" line="1">
Array
(
    [0] => ni sus
    [1] => manos son
    [2] => tan blancas
    [3] => ni son
    [4] => blancas sus
    [5] => palomas
)
</pre>
<p>Si se hace</p>
<pre lang="php" line="1">
unset($array[4]);
</pre>
<p>Quedará algo como:</p>
<pre lang="text">
Array
(
    [0] => ni sus
    [1] => manos son
    [2] => tan blancas
    [3] => ni son
    [5] => palomas
)
</pre>
<p>Es decir, el elemento no existe pero su posición en el array no se ha adaptado, hace un salto del 3 al 5 y en ocasiones lo ideal sería que el 4 se eliminara y el siguiente (el 5) pasara a ocupar su posición.</p>
<p>Para eso se puede utilizar la función <code>array_values()</code>, por ejemplo:</p>
<pre lang="php" line="1">
$array = array_values($array);
</pre>
<p>Haría que el resultado fuera:</p>
<pre lang="text">
Array
(
    [0] => ni sus
    [1] => manos son
    [2] => tan blancas
    [3] => ni son
    [4] => palomas
)
</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/05/php-cookies/" title="PHP: Cookies">PHP: Cookies</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/" title="Encontrar todos los links de una página con PHP">Encontrar todos los links de una página con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/06/regex-i-solo-letras-numeros-y-espacios/" title="RegEx I, sólo letras, números y espacios.">RegEx I, sólo letras, números y espacios.</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Encontrar todos los links de una página con PHP</title>
		<link>http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/</link>
		<comments>http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 10:49:42 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=343</guid>
		<description><![CDATA[No hay mucho que decir sobre esto&#8230; sólo dejar el código: $html = file_get_contents('http://www.example.com'); $dom = new DOMDocument(); @$dom->loadHTML($html); $xpath = new DOMXPath($dom); $hrefs = $xpath->evaluate("/html/body//a"); for ($i = 0; $i < $hrefs->length; $i++) { $href = $hrefs->item($i); $url = $href->getAttribute('href'); echo $url.''; } Visto en css-tricks Articulos relacionadosObtener la URL que se esta visitando [...]]]></description>
			<content:encoded><![CDATA[<p>No hay mucho que decir sobre esto&#8230; sólo dejar el código:</p>
<pre lang="PHP" line="1">
$html = file_get_contents('http://www.example.com');
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");
for ($i = 0; $i < $hrefs->length; $i++) {
   $href = $hrefs->item($i);
   $url = $href->getAttribute('href');
   echo $url.'';
}
</pre>
<p>Visto en <a href="http://css-tricks.com">css-tricks</a></p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/05/php-cookies/" title="PHP: Cookies">PHP: Cookies</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/" title="Comprobar si un directorio está vacío con PHP">Comprobar si un directorio está vacío con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/07/ucfirst-de-php-en-javascript/" title="ucfirst de PHP en Javascript">ucfirst de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/06/comprobar-validez-de-un-dominio-con-php-2/" title="Comprobar validez de un dominio con PHP (2)">Comprobar validez de un dominio con PHP (2)</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recursividad en mkdir de PHP</title>
		<link>http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/</link>
		<comments>http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 10:09:11 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Función]]></category>
		<category><![CDATA[mkdir]]></category>
		<category><![CDATA[Recursividad]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=255</guid>
		<description><![CDATA[No en todas las versiones de PHP se puede hacer un mkdir recursivo directamente, mkdir('/1/2/3/'); aunque es lo ideal, en versiones antiguas (la opción se añadió en la 5.0) no se podía. Si en tu servidor hay instalada una versión vieja de PHP y no tienes la posibilidad de actualizarlo tu mismo, puedes utilizar una [...]]]></description>
			<content:encoded><![CDATA[<p>No en todas las versiones de PHP se puede hacer un <strong>mkdir recursivo</strong> directamente, <code>mkdir('/1/2/3/');</code> aunque es lo ideal, en versiones antiguas (la opción se añadió en la 5.0) no se podía. Si en tu servidor hay instalada una versión vieja de PHP y no tienes la posibilidad de actualizarlo tu mismo, puedes utilizar una función propia que haga el mkdir recursivo. En el manual oficial de php se explica a fondo como utilizar correctamente la función oficial, con los permisos y recursividad que se necesiten.</p>
<p>Como por ejemplo:</p>
<pre lang="php" line="1">
function mkdir_recursivo($pathname, $mode){
	umask(0);
	is_dir(dirname($pathname)) || mkdir_recursive(dirname($pathname), $mode);
	return is_dir($pathname) || mkdir($pathname, $mode);
}</pre>
<p>Un ejemplo de uso de esta función sería:</p>
<pre lang="php" line="1">
$ruta = 'carpeta/subcarpeta/subsubcarpeta/';
mkdir_recursivo($ruta,0777);
</pre>
<p>Donde <code>0777</code> hay que poner los permisos que se quieran (con el 0 delante).</p>
<p>En cualquier caso, recomiendo leer el manual oficial y visitar estos enlaces para entender y poder escoger la opción que convenga.</p>
<ul>
<li><a href="http://es2.php.net/mkdir">Manual oficial de PHP: mkdir</a></li>
<li><a href="http://www.mombu.com/php/php/t-33140-recursive-mkdir-doesnt-work-when-path-includes-a-non-existent-root-folder-1010858.html">Mkdir recursivo no funciona cuando el path incluye una carpeta raíz inexistente.</a></li>
</ul>
<p>Suerte.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/" title="RMDIR recursivo en PHP">RMDIR recursivo en PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/07/eliminar-caracteres-raros-de-una-cadena-con-php/" title="Eliminar caracteres raros de una cadena con PHP">Eliminar caracteres raros de una cadena con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/" title="Comprobar si un directorio está vacío con PHP">Comprobar si un directorio está vacío con PHP</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encriptar y desencriptar cadena con PHP</title>
		<link>http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/</link>
		<comments>http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 15:06:46 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Criptografía]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Función]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=511</guid>
		<description><![CDATA[Cualquier programador Web ha podido necesitar pasar datos por $_GET &#8211; en la url &#8211; , es una forma fácil y cómoda de pasar valores de una página a otra, pero… en algunos casos puede no ser recomendable y habría que tener un mínimo de precaución, y para estos casos &#8211; y otros muchos &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Cualquier programador Web ha podido necesitar pasar datos por <code>$_GET</code> &#8211; en la url &#8211; , es una forma fácil y cómoda de pasar valores de una página a otra, pero… en algunos casos puede no ser recomendable y habría que tener un mínimo de precaución, y para estos casos &#8211; y otros muchos &#8211; se puede utilizar esta clase que un día vi &#8211; no se donde, si lo supiese pondría la fuente &#8211; y sobre la que me veo obligado a escribir, mas que nada para tenerla presente yo mismo y darla a conocer a quien pueda necesitarla.<span id="more-511"></span></p>
<p>Ya de paso, esto puede servirnos en algún que otro caso para evitar inyecciones SQL, y así evitar que alguien nos mangonee lo que no debe.</p>
<p><strong>Primero: Encriptar</strong></p>
<pre>function encrypt($string, $key) {
   $result = '';
   for($i=0; $i&lt;strlen($string); $i++) {
      $char = substr($string, $i, 1);
      $keychar = substr($key, ($i % strlen($key))-1, 1);
      $char = chr(ord($char)+ord($keychar));
      $result.=$char;
   }
   return base64_encode($result);
}</pre>
<p>Se utiliza un código secreto, que es el que se pone en <code>$key</code> y que cuando desencriptemos necesitaremos saberlo para que lo haga correctamente.</p>
<p>Para encriptar una cadena escribimos</p>
<pre>$cadena_encriptada = encrypt("LA CADENA A ENCRIPTAR","LA CLAVE");
</pre>
<p><strong>Segundo: Desencriptar</strong></p>
<pre>function decrypt($string, $key) {
   $result = '';
   $string = base64_decode($string);
   for($i=0; $i&lt;strlen($string); $i++) {
      $char = substr($string, $i, 1);
      $keychar = substr($key, ($i % strlen($key))-1, 1);
      $char = chr(ord($char)-ord($keychar));
      $result.=$char;
   }
   return $result;
}
</pre>
<p>Y para desencriptar la cadena escribimos</p>
<pre>$cadena_desencriptada = decrypt("LA CADENA ENCRIPTADA","LA CLAVE QUE SE USÓ PARA ENCRIPTARLA");
</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/" title="Recursividad en mkdir de PHP">Recursividad en mkdir de PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/07/eliminar-caracteres-raros-de-una-cadena-con-php/" title="Eliminar caracteres raros de una cadena con PHP">Eliminar caracteres raros de una cadena con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/06/regex-i-solo-letras-numeros-y-espacios/" title="RegEx I, sólo letras, números y espacios.">RegEx I, sólo letras, números y espacios.</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/05/php-cookies/" title="PHP: Cookies">PHP: Cookies</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Comprobar estado de un servidor mediante PHP</title>
		<link>http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/</link>
		<comments>http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 08:47:19 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Función]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=465</guid>
		<description><![CDATA[Quienes gestionen varias páginas en diferentes servidores, pueden necesitar hacer un pequeño test a los servidores cada poco tiempo para comprobar que están funcionando correctamente, o almenos que están funcionando, una opción es visitar las páginas, evidentemente, pero cuando el número de servidores crece no es en absoluto práctico, de manera que muchas veces resulta [...]]]></description>
			<content:encoded><![CDATA[<p>Quienes gestionen varias páginas en diferentes servidores, pueden necesitar hacer un pequeño test a los servidores cada poco tiempo para comprobar que están funcionando correctamente, o almenos que están funcionando, una opción es visitar las páginas, evidentemente, pero cuando el número de servidores crece no es en absoluto práctico, de manera que muchas veces resulta casi obligado buscar alternativas, o en este caso fabricarla uno mismo.</p>
<p><strong>Objetivo: Script para detectar si un servidor está caído, o no.<span id="more-465"></span></strong></p>
<p>Bien, el script consta de 3 partes, y 2 son básicas, que son la parte HTML y la parte PHP, la parte CSS podemos obviarla, pero siempre viene bien un poco de coloreado para tener una mejor visión.</p>
<p>Aquí se me hace bastante dificil separar los 3 códigos, por que van bastante &#8220;fusionados&#8221;, de manera que pondré por un lado la función que se encargará de averiguar el estado, la lista de servidores y por último el modo de repasar cada servidor.</p>
<p><strong>Parte 1/3: Función</strong></p>
<pre lang="php">function test($url,$tiempo){
   $check = @fsockopen($url, 80, $errno, $errstr, $tiempo);
   if($check){
      echo "&lt;li&gt;Online: $url&lt;/li&gt;";
   }else{
      echo "&lt;li&gt;Offline: $url&lt;/li&gt;";
   }
}</pre>
<p>Es bastante simple ¿no? por un lado recibe <code>$url</code>, que será el dominio o dirección IP &#8211; <span style="color: #ababab;">por ejemplo: emm-gfx.net o 255.255.255.255</span> &#8211; y por otro recibe la variable <code>$tiempo</code>, que será el tiempo de espera hasta &#8220;darse por vencido&#8221; y pasar al siguiente servidor, si este tiempo es superado, se dará por supuesto que el servidor está offline.</p>
<p>Ahora estaría bien tener una lista de servidores a revisar, en un array por ejemplo, yo lo he hecho de esta manera:</p>
<p><strong>Parte 2/3: Lista de servidores</strong></p>
<pre lang="php">$servidores = array(
   0=&gt;'emm-gfx.net',
   1=&gt;'emmsoftware.net',
   2=&gt;'blacksphere.es',
   3=&gt;'google.com',
   4=&gt;'dominioabsurdo.lol',
   5=&gt;'92.43.17.6',
   6=&gt;'255.255.255.255'
);</pre>
<p><strong>Parte 3/3: Ejecutar la función en cada uno de los servidores</strong></p>
<pre lang="php">$total = count($servidores);
$inicio = 0;
while($inicio &lt; $total){
   echo test($servidores[$inicio],$tiempo);
   $inicio++;
}</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/05/php-cookies/" title="PHP: Cookies">PHP: Cookies</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/" title="Encontrar todos los links de una página con PHP">Encontrar todos los links de una página con PHP</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eliminar caracteres raros de una cadena con PHP</title>
		<link>http://www.emm-gfx.net/2008/07/eliminar-caracteres-raros-de-una-cadena-con-php/</link>
		<comments>http://www.emm-gfx.net/2008/07/eliminar-caracteres-raros-de-una-cadena-con-php/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 08:43:24 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Función]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=1401</guid>
		<description><![CDATA[Esta función es casi elemental cuando se trabaja con formularios en PHP, si no elemental, es importante conocerla. Bueno esta función mismamente no, por que es una que me he hecho yo mismo pero supongo que habrán cientos similares… en cualquier caso, aquí pongo la mía, para guardarla en algún sitio y poder reutilizarla cuando [...]]]></description>
			<content:encoded><![CDATA[<p>Esta función es casi elemental cuando se trabaja con formularios en PHP, si no elemental, es importante conocerla.</p>
<p>Bueno esta función mismamente no, por que es una que me he hecho yo mismo pero supongo que habrán cientos similares… en cualquier caso, aquí pongo la mía, para guardarla en algún sitio y poder reutilizarla cuando la necesite, y ya de paso quizá ayudar a alguien.<span id="more-1401"></span></p>
<p>Función para eliminar caracteres raros (como acentos y simbolos) de una cadena:</p>
<pre>function quitar_caracteres_raros($cadena){
   $caracteres = 'À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬  ® ¯ ° ± ² ³´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ × ÷ " \' &amp; &lt; &gt;';
   $caracteres = explode(' ',$caracteres);
   $nchar      = count($caracteres);
   $base       = 0;
   while($base&lt;$nchar){
      $cadena = str_replace($caracteres[$base],'_',$cadena);
      $base++;
   }
   return $cadena;
}</pre>
<p>Así, si tenemos una variable con una cadena como por ejemplo:</p>
<pre>$titulo = 'Bitácora Josep Viciana';</pre>
<p>Y le aplicamos la función:</p>
<pre>$titulo = quitar_caracteres_raros($titulo);</pre>
<p>Ahora al mostrar el valor de la variable mostraría &#8220;Bit_cora Josep Viciana&#8221;, compatible con nombres de carpetas, URL, bases de datos… etc.</p>
<p>Los caracteres que se eliminan son los que están en la variable <code>$caracteres</code>, que son estos.</p>
<p><strong>EDIT:<br />
</strong> Si lo que se quiere es sólo quitar acentos pero dejar las letras, se puede utilizar esto:</p>
<pre>$cadena = strtr($cadena, "áäàéëèíïìóöòúüùñ", "aaaeeeiiiooouuun");</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/" title="Recursividad en mkdir de PHP">Recursividad en mkdir de PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/" title="Comprobar si un directorio está vacío con PHP">Comprobar si un directorio está vacío con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/07/ucfirst-de-php-en-javascript/" title="ucfirst de PHP en Javascript">ucfirst de PHP en Javascript</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2008/07/eliminar-caracteres-raros-de-una-cadena-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convertir Hexadecimal a RGB con PHP</title>
		<link>http://www.emm-gfx.net/2008/06/convertir-hexadecimal-a-rgb-con-php/</link>
		<comments>http://www.emm-gfx.net/2008/06/convertir-hexadecimal-a-rgb-con-php/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 07:16:02 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[conversor]]></category>
		<category><![CDATA[Hexadecimal]]></category>
		<category><![CDATA[RGB]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=1325</guid>
		<description><![CDATA[Veo en PHPClasses un articulo que muestra cómo convertir un código de color hexadecimal (#cc0000) a RGB (rgb(255,255,255)) y que si nos paramos a leer un poco se puede ver como también lo convierte a la inversa, de rgb a hexadecimal. Aquí el código: &#60;?php /** * This is an example on using Color to [...]]]></description>
			<content:encoded><![CDATA[<p>Veo en PHPClasses un articulo que muestra <strong>cómo convertir un código de color hexadecimal</strong> (<span style="color: #888888;">#cc0000</span>) <strong>a RGB</strong> (<span style="color: #888888;">rgb(255,255,255)</span>) y que si nos paramos a leer un poco se puede ver como también lo convierte a la inversa, de rgb a hexadecimal.</p>
<p>Aquí el código:</p>
<pre>&lt;?php
/**
* This is an example on using Color to get similar
* colors based on a supplied hex or rgb color.
*/
$hsv = Color::hex2hsv("#00CCFF");
//$hsv = Color::rgb2hsv(0, 204, 255);
for ($i = 0; $i &lt; 5; $i++) {
   $rS = mt_rand(0, 100);
   $rV = mt_rand(0, 100);
   $bg = "#".Color::hsv2hex($hsv['h'], $rS, $rV);
   //$rgb = Color::hsv2rgb($hsv['h'], $rS, $rV);
   //$bg = "rgb(".$rgb['r'].", ".$rgb['g'].", ".$rgb['b'].")"
   echo "&lt;div style=\"width:100px;height:100px;background-color:".$bg.";\"&gt; &lt;/div&gt;\n";
}
/**
* You can do the same but for random hues keeping the same by
* keeping the supplied saturation and value, random saturation
* by keeping the hue and value, and this will also work using
* the HSL methods, if you prefer to work with those values.
*/
?&gt;</pre>
<p>Que podriamos resumir en:</p>
<pre>&lt;?php
$hsv = Color::hex2hsv("#00CCFF");
for ($i = 0; $i &lt; 5; $i++) {$rS = mt_rand(0, 100);
   $rV = mt_rand(0, 100);
   $bg = "#".Color::hsv2hex($hsv['h'], $rS, $rV);
   echo "&lt;div style=\"width:100px;height:100px;background-color:".$bg.";\"&gt; &lt;/div&gt;\n";
}
?&gt;</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/" title="Comprobar si un directorio está vacío con PHP">Comprobar si un directorio está vacío con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/07/ucfirst-de-php-en-javascript/" title="ucfirst de PHP en Javascript">ucfirst de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/06/comprobar-validez-de-un-dominio-con-php-2/" title="Comprobar validez de un dominio con PHP (2)">Comprobar validez de un dominio con PHP (2)</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2010/01/str_replace-de-php-en-javascript-2/" title="La función str_replace() de PHP en Javascript">La función str_replace() de PHP en Javascript</a> (1)</li><li><a href="http://www.emm-gfx.net/2010/01/instalar-mcrypt-en-ubuntu-8-04-3-server-lts/" title="Instalar mcrypt en Ubuntu 8.04.3 server LTS">Instalar mcrypt en Ubuntu 8.04.3 server LTS</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2008/06/convertir-hexadecimal-a-rgb-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RegEx I, sólo letras, números y espacios.</title>
		<link>http://www.emm-gfx.net/2008/06/regex-i-solo-letras-numeros-y-espacios/</link>
		<comments>http://www.emm-gfx.net/2008/06/regex-i-solo-letras-numeros-y-espacios/#comments</comments>
		<pubDate>Sun, 08 Jun 2008 09:51:48 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Expresiones regulares]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=424</guid>
		<description><![CDATA[No es ningún secreto que las expresiones regulares son aún un campo casi desconocido para mí, aunque las haya usado muchas veces casi ninguna han sido hechas por mi… de manera que, para no tener que ir buscando en google la expresión correcta cada vez que quiera utilizarla &#8211; y ya de paso intentar subir [...]]]></description>
			<content:encoded><![CDATA[<p>No es ningún secreto que las expresiones regulares son aún un campo casi desconocido para mí, aunque las haya usado muchas veces casi ninguna han sido hechas por mi… de manera que, para no tener que ir buscando en google la expresión correcta cada vez que quiera utilizarla &#8211; y ya de paso intentar subir pagerank xD &#8211; haré una guia serie de ejemplos usables.</p>
<p>Este es el primero:</p>
<p>Detectar si una cadena contiene algo que no sean letras, numeros, espacios o guiones &#8211; las letras sin acentos.<br />
<strong>Código:</strong></p>
<pre lang="PHP" line="1">$dirname=trim($dirname);
if (!ereg("^[a-zA-Z0-9[:space:]]*$",$dirname)
   or (strlen($dirname<1) or (strlen($dirname)>30)){
   die('ERROR! Puede que el nombre de la carpeta no cumpla las condiciones.');
}</pre>
<p>En este caso además comprueba el tamaño de la cadena.</p>
<p>Con <code>trim()</code> eliminamos los saltos de linea y espacios que haya al inicio y al final de la cadena, y la cadena en cuestión estará guardada en <code>$dirname</code>.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/05/php-cookies/" title="PHP: Cookies">PHP: Cookies</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/" title="Comprobar si un directorio está vacío con PHP">Comprobar si un directorio está vacío con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/07/ucfirst-de-php-en-javascript/" title="ucfirst de PHP en Javascript">ucfirst de PHP en Javascript</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2008/06/regex-i-solo-letras-numeros-y-espacios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP: Cookies</title>
		<link>http://www.emm-gfx.net/2008/05/php-cookies/</link>
		<comments>http://www.emm-gfx.net/2008/05/php-cookies/#comments</comments>
		<pubDate>Wed, 14 May 2008 14:39:36 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Cookies]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=942</guid>
		<description><![CDATA[Guardar cookies en con php puede ser la forma más factible para desarrollar según qué aplicaciones… como por ejemplo un carrito de la compra, y su uso &#8211; en este caso en PHP &#8211; es realmente fácil. El primer paso para aprender a utilizarlas, seguramente sea ir a php.net y buscar cookie, pero como sé [...]]]></description>
			<content:encoded><![CDATA[<p>Guardar cookies en con php puede ser la forma más factible para desarrollar según qué aplicaciones… como por ejemplo un carrito de la compra, y su uso &#8211; en este caso en PHP &#8211; es realmente fácil.</p>
<p>El primer paso para aprender a utilizarlas, seguramente sea ir a php.net y buscar cookie, pero como sé que a los principiantes es un paso básico que les cuesta intentaré ir recreando los pasos que se deberían seguir para aprender a usar algunas funciones, para así intentar enseñar además del uso de las cookies el correcto uso de Internet.<br />
A día de hoy si vamos a php.net y buscamos cookie nos sale una lista de funciones, de las que por pura lógica podemos deducir que si queremos crear una cookie la función que necesitamos se llama setcookie, sabiendo eso, allá vamos.</p>
<p>Si miramos como se utiliza la función setcookie veremos algo como esto:</p>
<pre>setcookie(string $name[,string $value[,int $expire[,string $path[,string $domain[,bool $secure[,bool $httponly]]]]]])</pre>
<p>Puede parecer complejo, pero se puede simplificar mucho como se verá a continuación y como se puede ver en la misma php.net.<br />
Por ejemplo para guardar una cookie con lo que sería un ejemplo práctico, podríamos utilizar esto:</p>
<pre>setcookie ("TestCookie", $value, time () + 3600);</pre>
<p>En este caso, la cookie se llamaría TestCookie, su valor sería el guardado en la variable $value y caducaría en 3600 segundos, que al cambio es una hora.</p>
<p>Para leer esta cookie y luego utilizarla en el script o simplemente mostrarla se puede hacer esto:</p>
<pre>$cookie = $_COOKIE["TestCookie"]</pre>
<p>Para borrar una cookie creo que no hay ninguna función &#8211; pero eso no significa que no se pueda hacer, sólo que hay que pensar un poco &#8211; aunque podemos hacerlo, y de hecho no es difícil… podríamos hacer algo así:</p>
<pre>setcookie ("TestCookie", $value, time () + 1);</pre>
<p>De esta manera &#8220;borraríamos&#8221; la cookie TestCookie. Lo pongo entre comillas por que no la borraríamos, pero se eliminaría ella sola cuando pasase un segundo, o mejor dicho, la borraría el navegador… de hecho, creo que podríamos quitar el +1 final y hacer que lo borrase al instante.</p>
<p>Por ejemplo para hacer un contador de visitas para un único usuario, podríamos hacer esto:</p>
<pre>&lt;?PHP
if(isset($_COOKIE["visitas"])){
   $visitas = $_COOKIE["visitas"]+1;
}else{
   $visitas = 1;
}
setcookie ("visitas", $visitas, time () + 7*24*60*60);
echo "Nos has visitado $visitas veces";
?&gt;</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/" title="Encontrar todos los links de una página con PHP">Encontrar todos los links de una página con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/06/regex-i-solo-letras-numeros-y-espacios/" title="RegEx I, sólo letras, números y espacios.">RegEx I, sólo letras, números y espacios.</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2008/05/php-cookies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

