<?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>Php &#8211; Emanuel Paxtian</title>
	<atom:link href="https://emanuelpaxtian.com/blog/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>https://emanuelpaxtian.com/blog</link>
	<description></description>
	<lastBuildDate>Tue, 05 Aug 2025 05:04:36 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>10 Trucos Pocos Conocidos de Sublime Text para Programadores (PHP y Más)</title>
		<link>https://emanuelpaxtian.com/blog/10-trucos-pocos-conocidos-de-sublime-text-para-programadores-php-y-mas/</link>
		
		<dc:creator><![CDATA[Psoluciones]]></dc:creator>
		<pubDate>Tue, 05 Aug 2025 05:04:36 +0000</pubDate>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Recursos]]></category>
		<guid isPermaLink="false">https://www.emanuelpaxtian.com/?p=1162</guid>

					<description><![CDATA[Sublime Text es uno de los editores más rápidos y personalizables para desarrolladores. Pero más allá de lo básico (como&#160;Ctrl+P&#160;o&#160;multi-cursor), hay funciones ocultas que pueden&#160;ahorrarte horas de trabajo. Aquí tienes&#160;10&#8230;]]></description>
										<content:encoded><![CDATA[
<p>Sublime Text es uno de los editores más rápidos y personalizables para desarrolladores. Pero más allá de lo básico (como&nbsp;<strong>Ctrl+P</strong>&nbsp;o&nbsp;<strong>multi-cursor</strong>), hay funciones ocultas que pueden&nbsp;<strong>ahorrarte horas de trabajo</strong>.</p>



<p>Aquí tienes&nbsp;<strong>10 trucos avanzados</strong>&nbsp;que todo programador PHP (y otros lenguajes) debería conocer.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>1. Edición Rápida en Múltiples Archivos con &#8220;Find in Files&#8221;</strong></h2>



<p>¿Necesitas cambiar una función en varios archivos a la vez?</p>



<ul class="wp-block-list">
<li><strong><code>Ctrl + Shift + F</code></strong> (Windows/Linux) o <strong><code>Cmd + Shift + F</code></strong> (Mac).</li>



<li>Busca un término (ej: <code>function getUser</code>).</li>



<li><strong>¡Puedes editar directamente en los resultados!</strong></li>
</ul>



<p>👉&nbsp;<strong>Ejemplo PHP</strong>: Cambiar&nbsp;<code>mysql_query</code>&nbsp;a&nbsp;<code>PDO</code>&nbsp;en todo un proyecto.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>2. Selección Rápida de Bloques de Código</strong></h2>



<p>En lugar de seleccionar línea por línea:</p>



<ul class="wp-block-list">
<li><strong><code>Ctrl + Shift + M</code></strong> → Selecciona contenido entre paréntesis <code>()</code>, llaves <code>{}</code> o corchetes <code>[]</code>.</li>



<li><strong><code>Ctrl + Shift + J</code></strong> → Selecciona todo el contenido de un bloque (ideal para funciones PHP).</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>3. Reordenar Líneas con Drag &amp; Drop</strong></h2>



<p>¿Quieres mover una función o línea sin cortar y pegar?</p>



<ul class="wp-block-list">
<li><strong>Mantén <code>Ctrl + Shift</code></strong> y arrastra la línea (o bloque) hacia arriba/abajo.</li>



<li><strong>Útil para reorganizar métodos en una clase PHP.</strong></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>4. Comandos Rápidos con la Palabra Clave</strong></h2>



<p>Olvídate de buscar en menús:</p>



<ul class="wp-block-list">
<li><strong><code>Ctrl + P</code></strong> → Escribe <code>@</code> para saltar a funciones/métodos (útil en archivos PHP grandes).</li>



<li><strong><code>Ctrl + R</code></strong> → Lista todas las funciones/clases del archivo actual.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>5. Editar HTML/XML con &#8220;Emmet&#8221; (Ahorra Tiempo en Vistas PHP)</strong></h2>



<p>Sublime incluye&nbsp;<strong>Emmet</strong>&nbsp;para generar código HTML rápido:</p>



<ul class="wp-block-list">
<li>Escribe <code>div.container>ul>li*5</code> y presiona <strong><code>Tab</code></strong> → Genera una lista con 5 elementos.</li>



<li><strong>Funciona en archivos PHP con bloques HTML.</strong></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>6. Dividir la Pantalla en Columnas (Sin Plugins)</strong></h2>



<p>¿Quieres comparar dos archivos o ver código y resultado?</p>



<ul class="wp-block-list">
<li><strong><code>Alt + Shift + 2</code></strong> → Divide en 2 columnas.</li>



<li><strong><code>Alt + Shift + 1</code></strong> → Vuelve a una sola vista.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>7. Expandir/Contraer Bloques de Código Rápidamente</strong></h2>



<ul class="wp-block-list">
<li><strong><code>Ctrl + K + 1</code></strong> → Contraer todos los bloques de nivel 1 (útil para ocultar funciones PHP).</li>



<li><strong><code>Ctrl + K + J</code></strong> → Expande todo.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>8. Buscar y Reemplazar con Expresiones Regulares</strong></h2>



<p>¿Necesitas refactorizar código masivamente?</p>



<ul class="wp-block-list">
<li><strong><code>Ctrl + H</code></strong> → Activa Regex (<strong><code>.*</code></strong>).</li>



<li><strong>Ejemplo PHP</strong>: Cambiar <code>$var = old_function();</code> a <code>$var = new_function();</code> en todo el proyecto.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>9. Snippets Personalizados para PHP</strong></h2>



<p>Crea tus propios atajos para código repetitivo:</p>



<ol start="1" class="wp-block-list">
<li><strong><code>Tools > Developer > New Snippet</code></strong></li>



<li>Ejemplo para un <code>foreach</code> en PHP:</li>
</ol>



<p>xml</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: xml; title: ; notranslate">
&lt;snippet&gt;
    &lt;content&gt;&lt;!&#x5B;CDATA&#x5B;
foreach ($${1:array} as $${2:key} =&gt; $${3:value}) {
    ${4:// code}
}
]]&gt;&lt;/content&gt;
    &lt;tabTrigger&gt;foreach&lt;/tabTrigger&gt;
&lt;/snippet&gt;
</pre></div>


<ul class="wp-block-list">
<li>Al escribir <code>foreach</code> + <strong><code>Tab</code></strong>, se autocompletará.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>10. Navegación por Pestañas sin Mouse</strong></h2>



<ul class="wp-block-list">
<li><strong><code>Ctrl + Tab</code></strong> → Cambia entre pestañas recientes.</li>



<li><strong><code>Ctrl + PgUp/PgDown</code></strong> → Navega entre pestañas en orden.</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Validación y Sanitización de Datos en PHP con filter_var()</title>
		<link>https://emanuelpaxtian.com/blog/validacion-y-sanitizacion-de-datos-en-php-con-filter_var/</link>
		
		<dc:creator><![CDATA[Psoluciones]]></dc:creator>
		<pubDate>Tue, 05 Aug 2025 04:41:12 +0000</pubDate>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Seguridad]]></category>
		<guid isPermaLink="false">https://www.emanuelpaxtian.com/?p=1152</guid>

					<description><![CDATA[En PHP, la seguridad de los datos es crucial para prevenir vulnerabilidades como&#160;SQL Injection,&#160;XSS (Cross-Site Scripting)&#160;y otros ataques comunes. Una de las formas más eficientes y nativas de validar y&#8230;]]></description>
										<content:encoded><![CDATA[
<p>En PHP, la seguridad de los datos es crucial para prevenir vulnerabilidades como&nbsp;<strong>SQL Injection</strong>,&nbsp;<strong>XSS (Cross-Site Scripting)</strong>&nbsp;y otros ataques comunes. Una de las formas más eficientes y nativas de validar y sanitizar datos es usando la función&nbsp;<strong><code>filter_var()</code></strong>.</p>



<p>En este artículo, aprenderás:<br>✅&nbsp;<strong>Qué es&nbsp;<code>filter_var()</code>&nbsp;y por qué usarlo</strong><br>✅&nbsp;<strong>Diferencias entre validación y sanitización</strong><br>✅&nbsp;<strong>Filtros más útiles para formularios, emails y URLs</strong><br>✅&nbsp;<strong>Ejemplos prácticos de uso</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>1. ¿Qué es&nbsp;<code>filter_var()</code>?</strong></h2>



<p><code>filter_var()</code>&nbsp;es una función de PHP que permite&nbsp;<strong>validar</strong>&nbsp;y&nbsp;<strong>sanitizar</strong>&nbsp;datos aplicando filtros predefinidos. Es más seguro que funciones obsoletas como&nbsp;<code>htmlspecialchars()</code>&nbsp;o expresiones regulares complejas en algunos casos.</p>



<h3 class="wp-block-heading"><strong>Sintaxis básica:</strong></h3>



<p>php</p>



<pre class="wp-block-preformatted">filter_var($valor, $filtro, $opciones);</pre>



<ul class="wp-block-list">
<li><strong><code>$valor</code></strong>: Dato a filtrar (ej:&nbsp;<code>$_POST['email']</code>).</li>



<li><strong><code>$filtro</code></strong>: Tipo de filtro a aplicar (ej:&nbsp;<code>FILTER_VALIDATE_EMAIL</code>).</li>



<li><strong><code>$opciones</code></strong>&nbsp;(opcional): Configuraciones adicionales.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>2. Validación vs. Sanitización</strong></h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th><strong>Validación</strong></th><th><strong>Sanitización</strong></th></tr></thead><tbody><tr><td>Verifica si un dato cumple ciertas reglas (ej: un email válido).</td><td>Limpia el dato, eliminando caracteres peligrosos.</td></tr><tr><td>Devuelve&nbsp;<code>false</code>&nbsp;si no es válido.</td><td>Devuelve el dato modificado.</td></tr><tr><td>Ej:&nbsp;<code>FILTER_VALIDATE_EMAIL</code></td><td>Ej:&nbsp;<code>FILTER_SANITIZE_STRING</code></td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>3. Filtros Más Útiles</strong></h2>



<h3 class="wp-block-heading"><strong>Validación de datos comunes</strong></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Filtro</th><th>Descripción</th><th>Ejemplo</th></tr></thead><tbody><tr><td><code>FILTER_VALIDATE_EMAIL</code></td><td>Verifica si es un email válido.</td><td><code>filter_var("user@example.com", FILTER_VALIDATE_EMAIL)</code></td></tr><tr><td><code>FILTER_VALIDATE_URL</code></td><td>Comprueba si es una URL válida.</td><td><code>filter_var("https://example.com", FILTER_VALIDATE_URL)</code></td></tr><tr><td><code>FILTER_VALIDATE_IP</code></td><td>Valida una dirección IPv4 o IPv6.</td><td><code>filter_var("192.168.1.1", FILTER_VALIDATE_IP)</code></td></tr><tr><td><code>FILTER_VALIDATE_INT</code></td><td>Verifica si es un número entero.</td><td><code>filter_var(42, FILTER_VALIDATE_INT)</code></td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><strong>Sanitización de datos peligrosos</strong></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Filtro</th><th>Descripción</th><th>Ejemplo</th></tr></thead><tbody><tr><td><code>FILTER_SANITIZE_STRING</code>&nbsp;(OBSOLETO en PHP 8.1+)</td><td>Elimina etiquetas HTML.</td><td><code>filter_var("&lt;script&gt;alert('XSS')&lt;/script&gt;", FILTER_SANITIZE_SPECIAL_CHARS)</code></td></tr><tr><td><code>FILTER_SANITIZE_EMAIL</code></td><td>Elimina caracteres no válidos en emails.</td><td><code>filter_var("user@&lt;script&gt;example.com", FILTER_SANITIZE_EMAIL)</code></td></tr><tr><td><code>FILTER_SANITIZE_URL</code></td><td>Limpia URLs eliminando caracteres peligrosos.</td><td><code>filter_var("https://&lt;script&gt;example.com", FILTER_SANITIZE_URL)</code></td></tr><tr><td><code>FILTER_SANITIZE_NUMBER_INT</code></td><td>Solo deja números enteros.</td><td><code>filter_var("a1b2c3", FILTER_SANITIZE_NUMBER_INT)</code>&nbsp;→&nbsp;<code>123</code></td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>4. Ejemplos Prácticos</strong></h2>



<h3 class="wp-block-heading"><strong>Validar un formulario de contacto</strong></h3>



<p>php</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: php; title: ; notranslate">
$email = $_POST&#x5B;'email'] ?? '';
$url = $_POST&#x5B;'website'] ?? '';
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "El email no es válido";
    } elseif (!filter_var($url, FILTER_VALIDATE_URL)) {
    echo "La URL no es válida";
    } else {
    echo "Datos correctos, procesando...";
    }
</pre></div>


<h3 class="wp-block-heading"><strong>Sanitizar una entrada para evitar XSS</strong></h3>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: php; title: ; notranslate">
$comentario = $_POST&#x5B;'comentario'] ?? '';
$comentario_limpio = filter_var($comentario, FILTER_SANITIZE_SPECIAL_CHARS);

echo $comentario_limpio; // Convierte &lt;script&gt; en &amp;lt;script&amp;gt;

</pre></div>


<h3 class="wp-block-heading"><strong>Validar y sanitizar un número entero</strong></h3>



<p>php</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: php; title: ; notranslate">
$edad = $_POST&#x5B;'edad'] ?? '';
$edad_limpia = filter_var($edad, FILTER_SANITIZE_NUMBER_INT);
if (filter_var($edad_limpia, FILTER_VALIDATE_INT, &#x5B;"options" =&gt; &#x5B;"min_range" =&gt; 18, "max_range" =&gt; 99]])) {
    echo "Edad válida: $edad_limpia";
    } else {
    echo "Edad debe ser entre 18 y 99";
    }
</pre></div>


<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>5. Conclusión</strong></h2>



<p>✅&nbsp;<strong><code>filter_var()</code>&nbsp;es una herramienta poderosa para validar y sanitizar datos.</strong><br>✅&nbsp;<strong>Reduce riesgos de inyección de código y ataques XSS.</strong><br>✅&nbsp;<strong>Es más seguro que funciones antiguas como&nbsp;<code>mysql_real_escape_string()</code>.</strong></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Carrito de compras con php</title>
		<link>https://emanuelpaxtian.com/blog/carrito-de-compras-con-php/</link>
		
		<dc:creator><![CDATA[Psoluciones]]></dc:creator>
		<pubDate>Fri, 25 May 2018 23:35:44 +0000</pubDate>
				<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://www.emanuelpaxtian.com/?p=1108</guid>

					<description><![CDATA[Vamos a ver como crear un carrito de compras con php, no es muy complicado, pero al haber varios métodos se puede hacer un poco más lioso. Como podremos ver todo&#8230;]]></description>
										<content:encoded><![CDATA[<p>Vamos a ver como <strong>crear un carrito de compras con php</strong>, no es muy complicado, pero al haber varios métodos se puede hacer un poco más lioso.</p>
<p>Como podremos ver todo tiene su lógica, tendremos un <strong>método</strong> para cada una de las funcionalidades de un <strong>carrito de compras</strong> convencional, insertar, actualizar, eliminar etc, así que antes de comenzar veamos un listado de los métodos y funciones más importantes y que hacen<span id="more-3896"></span>:</p>
<ul>
<li style="list-style-type: none">
<ul>
<li><strong>El método add</strong></li>
</ul>
</li>
</ul>
<p>Pasando un array de clave valor nos insertará un producto dentro del carrito, si ese producto ya existe lo que hace es actualizar la cantidad de unidades.</p>
<ul>
<li style="list-style-type: none">
<ul>
<li><strong>La función remove_producto</strong></li>
</ul>
</li>
</ul>
<p>Pasando un unique_id, que no es más que un identificador único de cada producto que conseguimos encriptando con md5 la id del producto, eliminará por completo todas las unidades de ese producto.</p>
<ul>
<li style="list-style-type: none">
<ul>
<li><strong>El método get_content</strong></li>
</ul>
</li>
</ul>
<p>Nos devuelve un array con todos los productos del carrito y la información de cada uno de ellos.</p>
<ul>
<li style="list-style-type: none">
<ul>
<li><strong>El método precio_total</strong></li>
</ul>
</li>
</ul>
<p>Devuelve el precio total del carrito de compras, por defecto, si el carrito está vacío el valor es de 0.</p>
<ul>
<li style="list-style-type: none">
<ul>
<li><strong>El método artículos_total</strong></li>
</ul>
</li>
</ul>
<p>Devuelve el número total de artículos del carrito, por defecto, si el carrito está vacío el valor es de 0.</p>
<ul>
<li style="list-style-type: none">
<ul>
<li><strong>La función destroy</strong></li>
</ul>
</li>
</ul>
<p>Elimina por completo el carrito de compras, una vez hecho, nuestro carrito tendrá valor NULL.</p>
<h2>Clase carrito de compras con php</h2>
<p>Toda nuestra lógica estará dentro de una clase que llamaremos Carrito.class.php, así que creo que es un buen momento de crear un proyecto vacío y dentro crear ese archivo, una vez hecho podemos añadir el siguiente código con el que nuestro carrito quedará implementado.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
session_start();
class Carrito
{
    //aquí guardamos el contenido del carrito
    private $carrito = array();
    //seteamos el carrito exista o no exista en el constructor
    public function __construct()
    {
        if(!isset($_SESSION&#x5B;&quot;carrito&quot;]))
        {
            $_SESSION&#x5B;&quot;carrito&quot;] = null;
            $this-&gt;carrito&#x5B;&quot;precio_total&quot;] = 0;
            $this-&gt;carrito&#x5B;&quot;articulos_total&quot;] = 0;
        }
        $this-&gt;carrito = $_SESSION&#x5B;'carrito'];
    }
    //añadimos un producto al carrito
    public function add($articulo = array())
    {
        //primero comprobamos el articulo a añadir, si está vacío o no es un 
        //array lanzamos una excepción y cortamos la ejecución
        if(!is_array($articulo) || empty($articulo))
        {
            throw new Exception(&quot;Error, el articulo no es un array!&quot;, 1);
        }
        //nuestro carro necesita siempre un id producto, cantidad y precio articulo
        if(!$articulo&#x5B;&quot;id&quot;] || !$articulo&#x5B;&quot;cantidad&quot;] || !$articulo&#x5B;&quot;precio&quot;])
        {
            throw new Exception(&quot;Error, el articulo debe tener un id, cantidad y precio!&quot;, 1);
        }
        //nuestro carro necesita siempre un id producto, cantidad y precio articulo
        if(!is_numeric($articulo&#x5B;&quot;id&quot;]) || !is_numeric($articulo&#x5B;&quot;cantidad&quot;]) || !is_numeric($articulo&#x5B;&quot;precio&quot;]))
        {
            throw new Exception(&quot;Error, el id, cantidad y precio deben ser números!&quot;, 1);
        }
        //debemos crear un identificador único para cada producto
        $unique_id = md5($articulo&#x5B;&quot;id&quot;]);
        //creamos la id única para el producto
        $articulo&#x5B;&quot;unique_id&quot;] = $unique_id;
        //si no está vacío el carrito lo recorremos 
        if(!empty($this-&gt;carrito))
        {
            foreach ($this-&gt;carrito as $row)
            {
                //comprobamos si este producto ya estaba en el 
                //carrito para actualizar el producto o insertar
                //un nuevo producto	
                if($row&#x5B;&quot;unique_id&quot;] === $unique_id)
                {
                    //si ya estaba sumamos la cantidad
                    $articulo&#x5B;&quot;cantidad&quot;] = $row&#x5B;&quot;cantidad&quot;] + $articulo&#x5B;&quot;cantidad&quot;];
                }
            }
        }
        //evitamos que nos pongan números negativos y que sólo sean números para cantidad y precio
        $articulo&#x5B;&quot;cantidad&quot;] = trim(preg_replace('/(&#x5B;^0-9\.])/i', '', $articulo&#x5B;&quot;cantidad&quot;]));
        $articulo&#x5B;&quot;precio&quot;] = trim(preg_replace('/(&#x5B;^0-9\.])/i', '', $articulo&#x5B;&quot;precio&quot;]));
        //añadimos un elemento total al array carrito para 
        //saber el precio total de la suma de este artículo
        $articulo&#x5B;&quot;total&quot;] = $articulo&#x5B;&quot;cantidad&quot;] * $articulo&#x5B;&quot;precio&quot;];
        //primero debemos eliminar el producto si es que estaba en el carrito
        $this-&gt;unset_producto($unique_id);
        ///ahora añadimos el producto al carrito
        $_SESSION&#x5B;&quot;carrito&quot;]&#x5B;$unique_id] = $articulo;
        //actualizamos el carrito
        $this-&gt;update_carrito();
        //actualizamos el precio total y el número de artículos del carrito
        //una vez hemos añadido el producto
        $this-&gt;update_precio_cantidad();
    }
    //método que actualiza el precio total y la cantidad
    //de productos total del carrito
    private function update_precio_cantidad()
    {
        //seteamos las variables precio y artículos a 0
        $precio = 0;
        $articulos = 0;
        //recorrecmos el contenido del carrito para actualizar
        //el precio total y el número de artículos
        foreach ($this-&gt;carrito as $row)
        {
            $precio += ($row&#x5B;'precio'] * $row&#x5B;'cantidad']);
            $articulos += $row&#x5B;'cantidad'];
        }
        //asignamos a articulos_total el número de artículos actual
        //y al precio el precio actual
        $_SESSION&#x5B;'carrito']&#x5B;&quot;articulos_total&quot;] = $articulos;
        $_SESSION&#x5B;'carrito']&#x5B;&quot;precio_total&quot;] = $precio;
        //refrescamos él contenido del carrito para que quedé actualizado
        $this-&gt;update_carrito();
    }
    //método que retorna el precio total del carrito
    public function precio_total()
    {
        //si no está definido el elemento precio_total o no existe el carrito
        //el precio total será 0
        if(!isset($this-&gt;carrito&#x5B;&quot;precio_total&quot;]) || $this-&gt;carrito === null)
        {
            return 0;
        }
        //si no es númerico lanzamos una excepción porque no es correcto
        if(!is_numeric($this-&gt;carrito&#x5B;&quot;precio_total&quot;]))
        {
            throw new Exception(&quot;El precio total del carrito debe ser un número&quot;, 1);
        }
        //en otro caso devolvemos el precio total del carrito
        return $this-&gt;carrito&#x5B;&quot;precio_total&quot;] ? $this-&gt;carrito&#x5B;&quot;precio_total&quot;] : 0;
    }
    //método que retorna el número de artículos del carrito
    public function articulos_total()
    {
        //si no está definido el elemento articulos_total o no existe el carrito
        //el número de artículos será de 0
        if(!isset($this-&gt;carrito&#x5B;&quot;articulos_total&quot;]) || $this-&gt;carrito === null)
        {
            return 0;
        }
        //si no es númerico lanzamos una excepción porque no es correcto
        if(!is_numeric($this-&gt;carrito&#x5B;&quot;articulos_total&quot;]))
        {
            throw new Exception(&quot;El número de artículos del carrito debe ser un número&quot;, 1);
        }
        //en otro caso devolvemos el número de artículos del carrito
        return $this-&gt;carrito&#x5B;&quot;articulos_total&quot;] ? $this-&gt;carrito&#x5B;&quot;articulos_total&quot;] : 0;
    }
    //este método retorna el contenido del carrito
    public function get_content()
    {
        //asignamos el carrito a una variable
        $carrito = $this-&gt;carrito;
        //debemos eliminar del carrito el número de artículos
        //y el precio total para poder mostrar bien los artículos
        //ya que estos datos los devuelven los métodos 
        //articulos_total y precio_total
        unset($carrito&#x5B;&quot;articulos_total&quot;]);
        unset($carrito&#x5B;&quot;precio_total&quot;]);
        return $carrito == null ? null : $carrito;
    }
    //método que llamamos al insertar un nuevo producto al 
    //carrito para eliminarlo si existia, así podemos insertarlo
    //de nuevo pero actualizado
    private function unset_producto($unique_id)
    {
        unset($_SESSION&#x5B;&quot;carrito&quot;]&#x5B;$unique_id]);
    }
    //para eliminar un producto debemos pasar la clave única
    //que contiene cada uno de ellos
    public function remove_producto($unique_id)
    {
        //si no existe el carrito
        if($this-&gt;carrito === null)
        {
            throw new Exception(&quot;El carrito no existe!&quot;, 1);
        }
        //si no existe la id única del producto en el carrito
        if(!isset($this-&gt;carrito&#x5B;$unique_id]))
        {
            throw new Exception(&quot;La unique_id $unique_id no existe!&quot;, 1);
        }
        //en otro caso, eliminamos el producto, actualizamos el carrito y 
        //el precio y cantidad totales del carrito
        unset($_SESSION&#x5B;&quot;carrito&quot;]&#x5B;$unique_id]);
        $this-&gt;update_carrito();
        $this-&gt;update_precio_cantidad();
        return true;
    }
    //eliminamos el contenido del carrito por completo
    public function destroy()
    {
        unset($_SESSION&#x5B;&quot;carrito&quot;]);
        $this-&gt;carrito = null;
        return true;
    }
    //actualizamos el contenido del carrito
    public function update_carrito()
    {
        self::__construct();
    }
}
</pre>
<p>Para entender el funcionamiento del carrito es suficiente con repasar el código las veces necesarias, hasta que logremos entender el funcionamiento y la lógica ya que está explicado en cada apartado de forma muy muy clara.</p>
<p>Para poder hacer uso del carrito, lo primero es crear una nueva instancia, lo que nos devolverá un carrito vacío y valor 0 tanto al precio como al número de artículos.</p>
<p>Crear un nuevo carrito</p>
<pre class="brush: php; title: ; notranslate">$carrito = new Carrito();</pre>
<p>Añadir un producto al carrito</p>
<pre class="brush: php; title: ; notranslate">
//array que crea un producto
$articulo = array(
		&quot;id&quot;			=&gt;		14,
		&quot;cantidad&quot;		=&gt;		3,
		&quot;precio&quot;		=&gt;		50,
		&quot;nombre&quot;		=&gt;		&quot;camisetas&quot;
	);

//añadir el producto
//$carrito-&gt;add($articulo);
</pre>
<p>Eliminar un producto por su unique_id</p>
<pre class="brush: php; title: ; notranslate">

$carrito-&gt;remove_producto(&quot;45c48cce2e2d7fbdea1afc51c7c6ad26&quot;);
</pre>
<p>Ese es el aspecto de un campo unique_id de cada producto.</p>
<p>Obtener el contenido del carrito</p>
<pre class="brush: php; title: ; notranslate">
$carrito-&gt;get_content();
</pre>
<p>Obtener el precio total del carrito</p>
<pre class="brush: php; title: ; notranslate">
$carrito-&gt;precio_total();
</pre>
<p>Obtener el número de artículos del carrito</p>
<pre class="brush: php; title: ; notranslate">
$carrito-&gt;articulos_total();
</pre>
<p>Eliminar el contenido del carrito</p>
<pre class="brush: php; title: ; notranslate">
$carrito-&gt;destroy();
</pre>
<p>Una vez creado el carrito y añadido algún producto, simplemente podemos mostrar los artículos de la siguiente forma.</p>
<pre class="brush: php; title: ; notranslate">

//asignamos a $carro el método get_content() que contiene el contenido del carrito
$carro = $carrito-&gt;get_content();
if($carro)
{
	foreach($carro as $producto)
	{
		echo $producto&#x5B;&quot;id&quot;];
		echo &quot;&lt;br /&gt;&quot;;
		echo $producto&#x5B;&quot;unique_id&quot;];
		echo &quot;&lt;br /&gt;&quot;;
		echo $producto&#x5B;&quot;cantidad&quot;];
		echo &quot;&lt;br /&gt;&quot;;
		echo $producto&#x5B;&quot;precio&quot;];
		echo &quot;&lt;br /&gt;&quot;;
		echo $producto&#x5B;&quot;nombre&quot;];
		echo &quot;&lt;br /&gt;&quot;;
	}
}

</pre>
<p>Y eso es todo, no tiene más misterio un carrito de compras con php, sólo necesitamos juntar los ingredientes que necesitemos y ya está, espero que te sea de utilidad, por lo menos para seguir aprendiendo php si estás en ese camino.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Dejar solo letras y números con preg_replace</title>
		<link>https://emanuelpaxtian.com/blog/dejar-solo-letras-y-numeros-con-preg_replace/</link>
		
		<dc:creator><![CDATA[Psoluciones]]></dc:creator>
		<pubDate>Mon, 28 Aug 2017 22:55:39 +0000</pubDate>
				<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://emanuelpaxtian.com/blog/?p=1050</guid>

					<description><![CDATA[Hace poco un amigo me pregunto como dejar puras letras (mayusculas y minúsculas) y números en una cadena de texto eliminando todo lo que demás, en php existe una función&#8230;]]></description>
										<content:encoded><![CDATA[<p>Hace poco un amigo me pregunto como dejar puras letras (mayusculas y minúsculas)  y números en una cadena de texto eliminando todo lo que demás, en php existe una función muy interesante llamada <a href="http://php.net/manual/es/function.preg-replace.php">preg_replace</a>, a continuación le muestro una sencilla función </p>
<pre class="brush: php; title: ; notranslate">
function LetrasyNumeros($texto)
{
      $textoLimpio = preg_replace('(&#x5B;^A-Za-z0-9])', '', $texto);	     					
      return $textoLimpio;
}
</pre>
<p>Modo de uso </p>
<pre class="brush: php; title: ; notranslate">
$texto=&quot;Este texto-Limpio&quot;
echo LetrasyNumeros($texto)
//salida
//EstetextoLimpio
</pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Enviar correo con Php simple y html</title>
		<link>https://emanuelpaxtian.com/blog/enviar-correo-con-php-simple-y-html/</link>
		
		<dc:creator><![CDATA[Psoluciones]]></dc:creator>
		<pubDate>Wed, 06 Jul 2016 17:01:28 +0000</pubDate>
				<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://emanuelpaxtian.com/blog/?p=1007</guid>

					<description><![CDATA[Una de las inquietudes que tenemos cuando desarrollamos un sitio es y ahora como me contactan o bien cuando estamos desarrollando un proyecto, como hacemos un formulario de contacto para&#8230;]]></description>
										<content:encoded><![CDATA[<p>Una de las inquietudes que tenemos cuando desarrollamos un sitio es y ahora como me contactan o bien cuando estamos desarrollando un proyecto, como hacemos un formulario de contacto para que se pongan en contacto con el cliente.</p>
<p>Php tiene la función <a href="http://php.net/manual/en/function.mail.php">mail();</a> la cual es muy facil de usar como se ve en el primer ejemplo </p>
<pre class="brush: php; title: ; notranslate">
mail(&quot;contacto@dominio.com,pedro@dominio2.com&quot;,&quot;Asunto&quot;,&quot;Cuerpo del mensaje que se enviara&quot;) 
</pre>
<p>Ahora se puede hacer algo mas elaborado por si queremos que nuestro correo lleve diseño para ello necesitamos incluir html </p>
<pre class="brush: php; title: ; notranslate">
//Declaramos las variables de la cabecera del mensaje
$destinatario = &quot;destinatario@sitio1.com&quot;; 
$asunto = &quot;Titulo del mensaje&quot;; 
//definimos el cuerpo del mensaje ya con el html.
$cuerpo = ' 
&lt;html&gt; 
&lt;head&gt; 
   &lt;title&gt;Titulo del correo&lt;/title&gt; 
&lt;/head&gt; 
&lt;body&gt; 
&lt;h1&gt;Hola amigos!&lt;/h1&gt; 
&lt;p&gt; 
&lt;b&gt;Este es mi primer correo de prueba &lt;/b&gt;. Estoy encantado de tener varios lectores. y agradezco a cada uno de ellos el leerme. 
&lt;/p&gt; 
&lt;/body&gt; 
&lt;/html&gt; 
'; 

//para el envío en formato HTML debemos declarar las siguiente cabecera.
$headers = &quot;MIME-Version: 1.0\r\n&quot;; 
$headers .= &quot;Content-type: text/html; charset=iso-8859-1\r\n&quot;; 

//dirección del remitente 
$headers .= &quot;From: Emanuel Paxtian &lt;contacto@sitio.com&gt;\r\n&quot;; 

//dirección de respuesta, si queremos que sea distinta que la del remitente 
$headers .= &quot;Reply-To: respuesta@sitio.com\r\n&quot;;  

//Con esto especificamos las direcciones que recibirán copia 
$headers .= &quot;Cc: copia@sitio.com\r\n&quot;; 

//direcciones que recibirán copia oculta 
$headers .= &quot;Bcc: copiaoculta@dominio.com,copiaoculta@dominio2.com\r\n&quot;; 

mail($destinatario,$asunto,$cuerpo,$headers) 
</pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Usando expresiones regulares con sublime text</title>
		<link>https://emanuelpaxtian.com/blog/usando-expresiones-regulares-con-sublime-text/</link>
		
		<dc:creator><![CDATA[Psoluciones]]></dc:creator>
		<pubDate>Sat, 15 Aug 2015 04:16:14 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://psoluciones.net/?p=919</guid>

					<description><![CDATA[Es interesante saber que Sublime Text permite realizar búsquedas o reemplazos utilizando Expresiones regulares. Esto es una forma eficiente de hacer cambios utilizando patrones no exactos. Para activar el soporte de expresiones&#8230;]]></description>
										<content:encoded><![CDATA[<p>Es interesante saber que <strong>Sublime Text</strong> permite realizar búsquedas o reemplazos utilizando <strong>Expresiones regulares</strong>. Esto es una forma eficiente de hacer cambios utilizando patrones no exactos. Para activar el soporte de expresiones regulares simplemente hay que pulsar el primer botón de la barra de búsqueda, simbolizado por los caracteres <strong>.</strong>*.</p>
<p>Una vez activo, podremos realizar búsquedas o reemplazos utilizando expresiones regulares.</p>
<p>El mundo de las expresiones regulares es muy amplio, pero es muy útil para automatizar tareas de búsqueda con patrones muy variables o desconocidos. Aquí algunos ejemplos:</p>
<h2 id="expresiones-regulares-atómicas">Expresiones regulares atómicas</h2>
<table class="table table-hover">
<thead>
<tr class="header">
<th>RegEx</th>
<th>Significado</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>^texto</td>
<td>Línea que empiece por a</td>
</tr>
<tr class="even">
<td>texto$</td>
<td>Línea que acabe en a</td>
</tr>
<tr class="odd">
<td>.</td>
<td>Cualquier carácter</td>
</tr>
<tr class="even">
<td>a*</td>
<td>Cero o más «a»</td>
</tr>
<tr class="odd">
<td>a+</td>
<td>Una o más «a»</td>
</tr>
<tr class="even">
<td>a|b</td>
<td>Carácter «a» o «b»</td>
</tr>
<tr class="odd">
<td>[aeiou]</td>
<td>Una vocal minúscula</td>
</tr>
<tr class="even">
<td>[^aeiou]</td>
<td>Carácter no vocal minúscula</td>
</tr>
</tbody>
</table>
<h2 id="expresiones-regulares-básicas">Expresiones regulares básicas</h2>
<table class="table table-hover">
<thead>
<tr class="header">
<th>RegEx</th>
<th>Significado</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>[a-zA-Z0-9]+</td>
<td>Letras o números</td>
</tr>
<tr class="even">
<td>[0-9]{2}</td>
<td>Cifra de 2 dígitos</td>
</tr>
<tr class="odd">
<td>[0-9]{1,3}</td>
<td>Cifra de 1 a 3 dígitos</td>
</tr>
<tr class="even">
<td>[0-9]A?</td>
<td>Número que puede (o no) acabar en «A»</td>
</tr>
</tbody>
</table>
<h2 id="expresiones-regulares-de-agrupación-captura">Expresiones regulares de agrupación (captura)</h2>
<table class="table table-hover">
<thead>
<tr class="header">
<th>RegEx</th>
<th>Significado</th>
<th>Valor capturado ($1)</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>h(.+)a</td>
<td>Textos como: hola, hala, hasta, hora&#8230;</td>
<td>ol, al, ast, or&#8230;</td>
</tr>
<tr class="even">
<td>Nivel ([0-9]+)</td>
<td>Textos como: Nivel 0, Nivel 1, Nivel 2&#8230;</td>
<td>0, 1, 2&#8230;</td>
</tr>
</tbody>
</table>
<p>Lo interesante de estas últimas expresiones regulares es que los paréntesis efectúan una tarea de agrupación, capturando el contenido y guardándolo en una variable $1. En el caso de que la expresión regular contenga más paréntesis, irá capturando en variables sucesivas: $1, $2, $3, etc&#8230;</p>
<p>Todo esto puede ser muy útil para realizar reemplazos con fragmentos capturados en dichas variables.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Generar id`s únicos con php</title>
		<link>https://emanuelpaxtian.com/blog/generar-ids-unicos-con-php/</link>
		
		<dc:creator><![CDATA[Psoluciones]]></dc:creator>
		<pubDate>Thu, 30 Jul 2015 23:44:26 +0000</pubDate>
				<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://psoluciones.net/?p=893</guid>

					<description><![CDATA[Es muy común que necesitemos generar id’s únicos, y una de las técnicas mas comunes es md5(time()), pero PHP cuenta con uniqid(), de manera nativa, veamos unos ejemplos: // genera&#8230;]]></description>
										<content:encoded><![CDATA[<p>Es muy común que necesitemos generar id’s únicos, y una de las técnicas mas comunes es md5(time()), pero PHP cuenta con <strong>uniqid(),</strong> de manera nativa, veamos unos ejemplos:</p>
<pre class="brush: php; title: ; notranslate">
// genera una cadena única
echo uniqid();
/* devuelve
4bd67c947233e
*/
</pre>
<p>Puedes enviar como primer parámetro en la función un prefijo y puede poner a true el segundo valor para aumentar la entropía, (usando el generador de congruencia lineal combinado) al final del valor de retorno, lo que aumenta la probabilidad de que el resultado será único. <strong>Por defecto devuelve una cadena de 13 caracteres, si se activa la entropía devuelve una cadena de 23 caracteres</strong>.</p>
<pre class="brush: php; title: ; notranslate">
// con prefijo
echo uniqid('id_');
/* devuelve
id_4bd67d6cd8b8f
*/

// con más entropía
echo uniqid('',true);
/* devuelve
4bd67d6cd8b926.12135106
*/

// ambos
echo uniqid('id_',true);
/* devuelve
id_4bd67da367b650.43684647
*/
</pre>
<blockquote><p>La Entropía también se puede considerar como la cantidad de información promedio que contienen los símbolos usados. Los símbolos con menor probabilidad son los que aportan mayor información; por ejemplo, si se considera como sistema de símbolos a las palabras en un texto, palabras frecuentes como “que”, “el”, “a” aportan poca información. Mientras que palabras menos frecuentes como “corren”, “niño”, “perro” aportan más información. Si de un texto dado borramos un “que”, seguramente no afectará a la comprensión y se sobreentenderá, no siendo así si borramos la palabra “niño” del mismo texto original. Cuando todos los símbolos son igualmente probables (distribución de probabilidad plana), todos aportan información relevante y la entropía es máxima.</p></blockquote>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Generar cadena aleatoría con php</title>
		<link>https://emanuelpaxtian.com/blog/generar-cadena-aleatoria-con-php/</link>
		
		<dc:creator><![CDATA[Psoluciones]]></dc:creator>
		<pubDate>Thu, 30 Jul 2015 23:33:59 +0000</pubDate>
				<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://psoluciones.net/?p=891</guid>

					<description><![CDATA[Hay ocasiones que necesitamos generar una cadena aleatoria con php para usarla en sugerencias de contraseñas o con algún otro fin. En la función que les traigo a continuación les&#8230;]]></description>
										<content:encoded><![CDATA[<p>Hay ocasiones que necesitamos generar una cadena aleatoria con php para usarla en sugerencias de contraseñas o con algún otro fin.</p>
<p>En la función que les traigo a continuación les mostrare como generar una cadena aleatoria pasándole un parámetro en este caso la longitud de la cadena que nos va a generar y haciendo so de un arreglo y de un ciclo.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
function generarCadena($longitud) {
 $cadena = '';
 $patron = '1234567890abcdefghijklmnopqrstuvwxyz';
 $max = strlen($patron)-1;
 for($i=0;$i &lt; $longitud;$i++) 
 $cadena .= $patron{mt_rand(0,$max)};  
 return $cadena; }   
//Ejemplo de uso   
echo generarCadena(6); 
// genera una cadena aleatoria  de 6 caracteres de longitud. 
?&gt;
</pre>
<p>Ahora les explico las variable<br />
<strong>$longitud</strong>: Esta variable es la que nos devolverá un numero de caracteres.<br />
<strong>$patron</strong>: Aquí definimos que caracteres usaremos<br />
<strong>$cadena</strong>: es la variable que nos va a retornar nuestra función.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Infografía: La evolución de los frameworks PHP</title>
		<link>https://emanuelpaxtian.com/blog/infografia-la-evolucion-de-los-frameworks-php/</link>
		
		<dc:creator><![CDATA[Psoluciones]]></dc:creator>
		<pubDate>Mon, 27 Jul 2015 14:52:59 +0000</pubDate>
				<category><![CDATA[Infografias]]></category>
		<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://psoluciones.net/?p=852</guid>

					<description><![CDATA[A lo largo del tiempo la importancia de los frameworks a crecido en gran magnitud y eso debido a la necesidad tanto de los desarrolladores que requerimos de herramientas mas&#8230;]]></description>
										<content:encoded><![CDATA[<p>A lo largo del tiempo la importancia de los frameworks a crecido en gran magnitud y eso debido a la necesidad tanto de los desarrolladores que requerimos de herramientas mas robustas que nos faciliten el proceso de desarrollo de aplicaciones y así también la necesidad para los clientes que demandan aplicaciones con requerimientos cada vez mas complejos y posiblemente a un tiempo mas limitado. En la actualidad los frameworks PHP han evolucionado considerablemente y eso gracias a la comunidad de desarrolladores que día a día trabajan para solventar y mejorar progresivamente cada una de las herramientas que compone un framework.</p>
<p><img fetchpriority="high" decoding="async" class="aligncenter  wp-image-853" src="https://emanuelpaxtian.com/blog/wp-content/uploads/2015/07/framework.png" alt="framework" width="751" height="5696" srcset="https://emanuelpaxtian.com/blog/wp-content/uploads/2015/07/framework.png 874w, https://emanuelpaxtian.com/blog/wp-content/uploads/2015/07/framework-135x1024.png 135w" sizes="(max-width: 751px) 100vw, 751px" /></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ejemplo: Crear JSON con php y mysql</title>
		<link>https://emanuelpaxtian.com/blog/ejemplo-crear-json-con-php-y-mysql/</link>
		
		<dc:creator><![CDATA[Psoluciones]]></dc:creator>
		<pubDate>Fri, 17 Jul 2015 20:35:09 +0000</pubDate>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Sin categoría]]></category>
		<guid isPermaLink="false">https://psoluciones.net/?p=839</guid>

					<description><![CDATA[Aquí les mostrare el ejemplo para crear json con php y myqsl de una forma rápida para ello debemos crear un arreglo con el resultado de nuestra consulta el cual&#8230;]]></description>
										<content:encoded><![CDATA[<p>Aquí les mostrare el ejemplo para crear json con php y myqsl de una forma rápida para ello debemos crear un arreglo con el resultado de nuestra consulta  el cual posteriormente procesaremos para convertirlo a JSON y mandarlo a imprimir o guardar nuestro Resultado JSON en un archivo para posteriormente utilizarlo a esto le podríamos añadir a directiva header(&#8216;Content-Type: application/json&#8217;); para que nos las reconozca nuestro navegador.</p>
<pre class="brush: php; title: ; notranslate">
&amp;lt;?php   
//definimos las variables para nuestra conexión 
 $server = &amp;quot;localhost&amp;quot;; $user = &amp;quot;root&amp;quot;; $pass = &amp;quot;&amp;quot;; $bd = &amp;quot;psoluciones&amp;quot;;   
//Generamos nuestra conexión  
$conexion = mysqli_connect($server, $user, $pass,$bd)  or die(&amp;quot;Ha sucedido un error inesperado en la conexion de la base de datos&amp;quot;);   
//generamos la consulta $sql = &amp;quot;SELECT * FROM clientes&amp;quot;; 
mysqli_set_charset($conexion, &amp;quot;utf8&amp;quot;); 
//formato de datos utf8   
if(!$result = mysqli_query($conexion, $sql)) die();   
$clientes = array(); 
//creamos un array el cual posteriormente procesaremos a JSON

while($row = mysqli_fetch_array($result))  {      
$id=$row&#x5B;'id'];     
$nombre=$row&#x5B;'nombre'];     
$edad=$row&#x5B;'edad'];     
$genero=$row&#x5B;'genero'];     
$email=$row&#x5B;'email'];     
$localidad=$row&#x5B;'localidad'];    
$telefono=$row&#x5B;'telefono'];            
$clientes&#x5B;] = array('id'=&amp;gt; $id, 'nombre'=&amp;gt; $nombre, 'edad'=&amp;gt; $edad, 'genero'=&amp;gt; $genero,
'email'=&amp;gt; $email, 'localidad'=&amp;gt; $localidad, 'telefono'=&amp;gt; $telefono);
 
}
    
//desconectamos la base de datos
$close = mysqli_close($conexion) or die(&amp;quot;Ha sucedido un error inesperado en la desconexión de la base de datos&amp;quot;);
  
 
//Creamos el JSON
$json_string = json_encode($clientes);
// imprimimos para mostrar el contenido
echo $json_string;
 
//Si queremos crear un archivo json, sería de esta forma:
/*
$file = 'clientes.json';

file_put_contents($file, $json_string);
*/
 
?&amp;gt;
</pre>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
