Mostrando entradas con la etiqueta php. Mostrar todas las entradas
Mostrando entradas con la etiqueta php. Mostrar todas las entradas

domingo, 6 de septiembre de 2015

Convertir caracteres entre mayúsculas y minúsculas 2

Convertir el primer carácter de cada palabra del string



La función ucwords() de Php convierte el primer carácter de cada palabra a mayúscula.

// Ejemplo
<?
$foo= 'Viens, fait le pour moi!';
$bar= ucwords($foo); // Viens, Fait Le Pour Moi!
print $bar."\n";

Para hacer lo contrario, es decir, convertir a minúscula el primer carácter de cada palabra, tenemos que trabajar un poco más:


<?
/* 
    # lcwords v1.000
    # Convertir el primer carácter de cada palabra a minúscula
    # input string
    # return string
*/
function lcwords($string)
{
/* Variables temporales */
    # variable loop
    $a = 0;
    # almacenar todas las palabras en un array para luego unirlas en un string y retornarlo
    $string_new = array();
    $string_exp = explode(" ",$string);
    foreach($string_exp as $astring)
    {
        for($a=0;$a<strlen($astring);$a++)
        { 
            # chequear que el carácter es una letra
            # ejemplo: si la palabra es "100PRE" debería convertir la letra P solamente
            # chequear el carácter en la posicion $a
            if(preg_match("'\w'",$astring[$a]))
            {
                $astring[$a] = strtolower($astring[$a]);
                # conseguido! finalizar el bucle
                break;
            }
        }
        $string_new[] = $astring;
    }
    # devolver el string como la unión de las palabras separadas por un espacio
    return implode(" ",$string_new);
}

// Ejemplo 2
$foo = 'Viens, embrasse MOI!';
$bar = lcwords($foo); // viens, embrasse mOI!



En Javascript no hay una función ucwords() como en Php para convertir en mayúsculas la primera letra de cada palabra en un string, pero podemos crear una:

function ucwords(str){
return str.replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g,
        function($1){
            return $1.toUpperCase();
        });
}
//Ejemplo
str= "Tout ce qui nous a unis";
console.log(ucwords(str)); // Tout Ce Qui Nous A Unis

Para convertir a minúsculas la primera letra de cada palabra en un string en Javascript, podemos armar esta función lcwords:

function lcwords(str){
return str.replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g,
        function($1){
            return $1.toLowerCase();
        });
}
//Ejemplo
str= "Tout ce Qui NOUS a Unis";
console.log(lcwords(str)); // tout ce qui nOUS a unis

Para convertir el primer carácter de cada palabra de un string a mayúsculas o minúsculas en Perl tampoco existe una función ucwords() o lcwords(). Pero podemos usar split, map y join en conjunto para lograr ese efecto. Con split separamos el string en palabras, con map aplicamos una función a cada palabra, en este caso ucfirst o lcfirst, y luego con join volvemos a juntar el string. Veamos el ejemplo:

# Ejemplo 1
$texto = "CES TRaces quE Tu as laisse à Paris";
$texto = join '', map { ucfirst } split /(\s+)/, $texto;
# CES TRaces QuE Tu As Laisse à Paris
print "Texto: " . $texto;
# Ejemplo 2
$texto = "CES TRaces quE Tu as laisse à Paris";
$texto = join '', map { lcfirst } split /(\s+)/, $texto;
# cES tRaces quE tu as laisse à paris
print "Texto: " . $texto;

Un tercer ejemplo

Si además de pasar la primera letra a mayúsculas, queremos las demás en minúsculas, prueba agregar otra función en map, en este orden: ucfirst lc

# Ejemplo 3
$texto = "CES TRaces quE Tu as laisse à Paris";
$texto = join '', map { ucfirst lc } split /(\s+)/, $texto;
# Ces Traces Que Tu As Laisse à Paris
print "Texto: " . $texto;


martes, 1 de septiembre de 2015

Convertir caracteres entre mayúsculas y minúsculas


Convertir todos los caracteres del string


La función de Perl lc() regresa el string pasado como parámetro con todos sus caracteres en minúsculas. En cambio la función uc() regresa el string pasado como parámetro a mayúsculas.

my $s = "La comunidad de compra y venta OnLine de Europa\n";
print("Todo en mayúsculas:\n");
print(uc($s),"\n");
print("Todo en minúsculas:\n");
print(lc($s),"\n");

La función de Javascript toLowerCase() regresa el string pasado como parámetro con todos sus caracteres en minúsculas. En cambio la función toUpperCase() regresa el string pasado como parámetro a mayúsculas.

// Ejemplo 1
var str = "Hola Mundo!";
var res = str.toLowerCase(); 
// Ejemplo 2
var str = "Hola Mundo!";
var res = str.tUpperCase(); 

La función de Php strtolower() regresa el string pasado como parámetro con todos sus caracteres en minúsculas. En cambio la función strtoupper() regresa el string pasado como parámetro a mayúsculas.

$str = "SiguE a tus FavoritoS dESDe aQuí";
$str = strtoupper($str);
// muestra:  SIGUE A TUS FAVORITOS DESDE AQUÍ
echo $str; 
$str = "SiguE a tus FavoritoS dESDe aQuí";
$str = strtolower($str);
// muestra  sigue a tus favoritos desde aquí
echo $str; 

 

Convertir el primer carácter de un string


La función lcfirst() de Perl devuelve el string pasado como parámetro pero con la primera letra cambiada a minúsculas. La función ucfirst() de Perl devuelve el mismo string pero con la primera letra cambiada a mayúsculas.

print lcfirst $str;  // Muestra la primera letra en minúsculas
print ucfirst $str;  // Muestra la primera letra en mayúsculas

La función lcfirst() de Php devuelve el string pasado como parámetro pero con la primera letra cambiada a minúsculas. La función ucfirst() de Php devuelve el mismo string pero con la primera letra cambiada a mayúsculas.

$bar = 'HELLO WORLD!';
$bar = lcfirst($bar);             // hELLO WORLD!
$bar = ucfirst($bar);             // HELLO WORLD!

En Javascript no existen la función lcfirst o ucfirst, pero se puede usar la función charAt() con 0 como argumento para que devuelva el carácter ubicado en la posición 0. A éste carácter le aplicamos la funcion toUpperCase() o toLowerCase() según corresponda. Luego lo concatenamos con el resto del string y así nos queda la respuesta que esperamos.

// ejemplo de un ucfirst simulado
var cadena= "hola mundo!";
var respuesta= cadena.charAt(0).toUpperCase() + cadena.substr(1);
// nos queda "Hola mundo!"

// ejemplo de un lcfirst simulado
var cadena= "Hola Mundo!";
var respuesta= cadena.charAt(0).toLowerCase() + cadena.substr(1);
// nos queda "hola Mundo!"



sábado, 29 de agosto de 2015

Tomar una parte de un string

La función substr en Php

La función substr() en Php retorna la porción de un string entre una posición de comienzo y una longitud dada. Si la longitud es omitida devuelve todos los caracteres hasta el final del string. Ambos parámetros podrían ser negativos.

// Ejemplos 
$rest = substr("0123456"2);      // retorna "23456"
$rest = substr("0123456", -2);     // retorna "56"
$rest = substr("0123456"22);   // retorna "23"
$rest = substr("0123456"2, -2);  // retorna "234"
$rest = substr("0123456", -3, -2); // retorna "4"
$rest = substr("0123456", -3, -3); // retorna ""

La función substr en Perl

La función substr() en Perl retorna una porción del string contenida entre la posición de comienzo y una longitud dada. Si la longitud es omitida devuelve todos los caracteres hasta el final del string. Ambos parámetros podrían ser negativos.

# Ejemplos
my $cadena = "0123456";
my $subcadena = substr($cadena,0,4); # $subcadena contiene "0123";
$subcadena = substr($cadena,1,4);    # $subcadena contiene "1234";
$subcadena = substr($cadena,2);      # $subcadena contiene "23456";
$subcadena = substr($cadena,-4,3);   # $subcadena contiene "345";
$subcadena = substr($cadena,-4,-3);  # $subcadena contiene "3";
$subcadena = substr($cadena,3,-4);   # $subcadena contiene "";
$subcadena = substr($cadena,3,-3);   # $subcadena contiene "3";


La función substring en Javascript

La función substring() en Javascript retorna una porción del string contenida entre dos índices. Si alguno es negativo lo considera como un 0.

var cadena = "0123456";
var rest = cadena.substring( 2);  // retorna "23456"
rest = cadena.substring( -2);     // retorna "0123456"
rest = cadena.substring( 23);   // retorna "2"
rest = cadena.substring( 22);   // retorna ""
rest = cadena.substring( 2, -2);  // retorna "01"
rest = cadena.substring( 0, 2);   // retorna "01"
rest = cadena.substring( -3, -2); // retorna ""
rest = cadena.substring( -3, -3); // retorna ""

La función substr en Javascript

La función substr() en Javascript retorna una porción del string contenida desde una posición inicial y hasta la cantidad de caracteres indicada como segundo parámetro. Si la longitud es negativa, la considera como un 0. Si la posición inicial es negativa, toma la posición inicial desde el final del string en vez de desde el principio.

var cadena = "0123456";
var rest = cadena.substr( 2);   // retorna "23456"
rest = cadena.substr( -2);      // retorna "56"
rest = cadena.substr( 23);    // retorna "234"
rest = cadena.substr( 22);    // retorna "23"
rest = cadena.substr( 2, -2);   // retorna ""
rest = cadena.substr( 0, 2);    // retorna "01"
rest = cadena.substr( -3, -2);  // retorna ""
rest = cadena.substr( -3, -3);  // retorna ""

La función slice en Javascript

La función slice() en Javascript retorna una porción del string contenida entre dos índices. Si algún índice es negativo, toma la posición desde el final del string en vez de desde el principio.

var cadena = "0123456";
var rest = cadena.slice( 2);  // retorna "23456"
rest = cadena.slice( -2);     // retorna "56"
rest = cadena.slice( 2, 3);   // retorna "2"
rest = cadena.slice( 2, 2);   // retorna ""
rest = cadena.slice( 2, -2);  // retorna "234"
rest = cadena.slice( 0, 2);   // retorna "01"
rest = cadena.slice( -3, -2); // retorna "4"
rest = cadena.slice( -3, -3); // retorna ""


viernes, 27 de diciembre de 2013

Algunas buenas prácticas en PHP

Indentar tu código y usar espacios en blanco para mejorar su lectura

Coloca varios niveles de sangrado y separar párrafos de código con líneas en blanco mejoran su legibilidad. Esto te ayudará a hacer cambios en el futuro. Se recomienda usar espacios en vez de caracteres de tabulación porque podría verse diferente en diferentes editores. Los IDEs y editores de texto avanzados puede indentar en forma automática.

Encontrá el mayor número de una terna

Como ejemplo tratemos de leer este código :
if(($n1>$n2)&&($n1>$n3)){ echo "El mayor es $n1\n"; }else{ 
if($n2>$n3){ echo "El mayor es $n2\n"; }else{ echo "El mayor es $n3\n"; 
}} 
y comparémoslo con este código bien indentado:
if (($n1>$n2) && ($n1>$n3)) {
  echo "El mayor es $n1\n";
} else {
  if ($n2>$n3) {
    echo "El mayor es $n2\n";
  } else {
    echo "El mayor es $n3\n";
  }
} 

Almacenar direcciones IP como UNSIGNED INT

Cuando tenemos que guardar una IP en una tabla de nuestra base de datos podemos pensar en usar un VARCHAR(15) sin darnos cuenta que podemos almacenarlo en un entero, ahorrando espacio y utilizando un campo de tamaño fijo en vez de variable.

INET_ATON()

Esta función de Mysql retorna una representación numérica de una dirección IP.
Por ejemplo:
mysql> SELECT INET_ATON('10.0.5.9');
        -> 167773449
el valor se calcula sumando los productos de cada término por 256 elevado al cubo, al cuadrado, a la uno o a la cero según su posición: 10×2563 + 0×2562 + 5×256 + 9 = 167773449.

INET_NTOA()

Dado un número esta función de Mysql retorna una representación de dirección IP que estamos acostumbrados a ver de cuatro números separados por puntos.
Por ejemplo:
mysql> SELECT INET_NTOA(167773449);
        -> '10.0.5.9'

Implementación

Tenés que utilizar campos UNSIGNED INT porque los campos INT no pueden almacenar correctamente los valores numéricos de IPs que empiecen con un número mayor a 127.
En PHP hay funciones similares llamadas ip2long() y long2ip(). Por ejemplo para actualizar una tabla "usuarios" con la IP del usuario actual podriamos usar:
$r = "UPDATE usuarios 
      SET ip = INET_ATON('{$_SERVER['REMOTE_ADDR']}') 
      WHERE user_id = $user_id";  

Usar Output Buffering

Activando el almacenamiento de la salida en búffer mejoramos el rendimiento y velocidad de nuestros scripts PHP. Sin output buffering el script va mostrando el HTML de la página a medida que lo va procesando, en trozos. Pero agregando output buffering PHP almacena en una variable todo el HTML y lo envía al navegador de un tirón.

Funciones ob_start() y ob_end_flush()

ob_start() activa el almacenamiento en búffer y en forma optativa podemos decirle cuánto queremos almacenar como máximo y qué función llamar cuando se llene el búffer.
ob_end_flush() desactiva el almacenamiento de la salida en búffer, envía su contenido y lo descarta.

Implementación

Imprimir los cubos de los primeros 100 números naturales:
<!DOCTYPE html>  
<?php ob_start(); ?>  
<html lang="en">  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">   
    <title>Cubos</title>  
</head>  

<body>  
  <?php for($i = 0; $i <= 100; $i++){?>
      <p>El cubo de <?php echo $i;?> es <?php echo pow($i, 3);?></p>
  <?php } ?> 
</body>  
</html>  
<?php ob_end_flush();

lunes, 26 de agosto de 2013

Ocultar los primeros N digitos o los últimos con una expresion regular con PHP

PHP

Ocultar los primeros caracteres de una cadena

Supongamos que queremos ocultar los primeros 12 caracteres de una cadena que tiene más de 11 caracteres, cambiando esos caracteres por letras x:
$cadena= 'abcdefghijklmnopq';
$pattern = '/^............/i';
$replacement = 'xxxxxxxxxxxx';
$cadena= preg_replace($pattern, $replacement, $cadena);
echo 'Cadena: ' . $cadena;
xxxxxxxxxxxxmnopq

Ocultar los últimos caracteres de una cadena

Supongamos que queremos ocultar los ultimos 4 caracteres de una cadena que tiene más de 3 caracteres, cambiando esos caracteres por letras x:
$cadena= 'abcdefghijklmnopq';
$pattern = '/....$/i';
$replacement = 'xxxx';
$cadena= preg_replace($pattern, $replacement, $cadena);
echo 'Cadena: ' . $cadena;
abcdefghijklmxxxx