Archivo de la categoría: PHP

Apartado para el mundo de la programación en PHP

Combinatoria en PHP

Con la función getCombinations obtenemos la combinatoria en PHP todos las combinaciones de valores posibles del array pasado como parámetro.

    /**
     * A partir del array recibido como parametro devuelve un array con todas las combinaciones de valores posibles
     * del array
     * 
     * @param $list
     * @return array
     */
    public function getCombinations($list)
    {
        $terms = array();
        $bits = count($list); //bits of binary number equal to number of words in query;

        //Convert decimal number to binary with set number of bits, and split into array
        $dec = 1;
        $binary = str_split(str_pad(decbin($dec), $bits, '0', STR_PAD_LEFT));

        while ($dec < pow(2, $bits)) {
            //Each 'word' is linked to a bit of the binary number.
            //Whenever the bit is '1' its added to the current term.
            $curterm = "";
            $i = 0;
            while ($i < ($bits)) {
                if ($binary[$i] == 1) {
                    $curterm .= $list[$i] . " ";
                }
                $i++;
            }
            $terms[] = $curterm;
            //Count up by 1
            $dec++;
            $binary = str_split(str_pad(decbin($dec), $bits, '0', STR_PAD_LEFT));
        }

        return $terms;
    }

Generar array con números aleatorios únicos

Para generar array con números aleatorios únicos aquí dejo una función:

/**
 * Genera un numero aleatorio dentro del rango maximo pasado por parametro, que no este dentro del array
 *
 * @param $array
 * @param $num_max
 * @param $num_min
 * @return int
 */
function generateUniqueRandom( $array, $num_max, $num_min=1 ){
    $rand = rand($num_min, $num_max);
    $is_new_rand = true;

    for( $j = 0; $j < count($array); $j++ ){
        if( $array[$j] == $rand ){
            $is_new_rand = false;
        }
    }
    if( $is_new_rand == false ){
        $rand = generateUniqueRandom( $array, $num_max );
    }

    return $rand;
}

Comprobar si una fecha esta dentro de un rango de fechas – PHP

	/**
     * Verifica que una fecha esté dentro del rango de fechas establecidas
     * @param $start_date fecha de inicio
     * @param $end_date fecha final
     * @param $evaluame fecha a comparar
     * @return true si esta en el rango, false si no lo está
     */
    function check_in_range($start_date, $end_date, $evaluame) {
        $start_ts = strtotime($start_date);
        $end_ts = strtotime($end_date);
        $user_ts = strtotime($evaluame);
        return (($user_ts >= $start_ts) && ($user_ts <= $end_ts));
    }

	if( check_in_range($date_start, $date_end, $today) ){
    	echo "Dentro de rango";
   	} else {
		echo "Fuera de rango";
    }

Función original de: ecapy.com

Crear archivo xml con DomDocument – PHP

//Creación de archivo XML
$xml = new DomDocument( '1.0', 'UTF-8' );

//Creación de un nodo sin valor
$root_node = $xml->createElement( 'root_node') ;
$xml->appendChild( $root_node );

//Creación de un nodo con valor
$name_node = $xml->createElement( 'name_node', 'node_value' );
$root_node->appendChild( $name_node );

//Añadir atributo a un nodo
$name_node->setAttribute( 'name_attribute', 'attribute_value );

//Añadir CDATA al valor de un nodo
$name_node = $xml->createElement( 'name_node' );
$cdata = $xml->createCDATASection( 'cdata_value' );
$name_node->appendChild( $cdata );

//Guardar el archivo xml
$xml->formatOutput = true;
$xml->save('idealista_s2p_xml.xml');

//Mostrar el xml en el navegador
$xml->formatOutput = true;
header("Content-type: text/xml");
return $xml->saveXML();

Limpiar cadena – PHP

/*	- Limpia la string pasada por parámetros de caracteres extraños
*		$string : string a limpiar
*		?return : devuelve la cadena limpiada de caracteres
*/
public static function limpiarString( $string ){
  $tofind = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
  $replac = "AAAAAAaaaaaaOOOOOOoooo00EEEEeeeeCcIIIIiiiiUUUUuuuuyNn";
  $string = utf8_encode(strtr(utf8_decode($string), $tofind,$replac));
  $string = preg_replace('/[^a-zA-Z0-9\_]/', '-', $string);
  return $string;
}