Foros del Web » Programando para Internet » PHP »

expresiones regulares: la primera letra

Estas en el tema de expresiones regulares: la primera letra en el foro de PHP en Foros del Web. Hola... Tengo que determinar cual es la primera letra en un string donde el usuario puede teclear cualquier caracter incluyendo números. Por ejemplo: _(_* (&^&%"'A ...
  #1 (permalink)  
Antiguo 21/07/2005, 11:00
 
Fecha de Ingreso: mayo-2004
Mensajes: 159
Antigüedad: 19 años, 10 meses
Puntos: 0
expresiones regulares: la primera letra

Hola...

Tengo que determinar cual es la primera letra en un string donde el usuario puede teclear cualquier caracter incluyendo números.

Por ejemplo:
_(_* (&^&%"'A lo mejor

Determinar que la primera letra es la A.

Cómo puedo hacer???

Gracias
  #2 (permalink)  
Antiguo 21/07/2005, 18:09
okram
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo

Hola

Tienes esta cadena:

Código PHP:
$cadena "forosdelweb"
Tu codigo seria este

Código PHP:
 <?php
$cadena 
"forosdelweb"
echo 
"La primera letra es ".$cadena['0'];
echo 
"La segunda letra es ".$cadena['1']; 
echo 
"La tercera letra es ".$cadena['2'];
echo 
"La decima letra es ".$cadena['9'];
 
//o puedes comprobar alguna letra si asi lo deseas
if($cadena['0'] !== "a")
{
echo 
"La primera letra debe ser a";
} else {
echo 
"la cadena es correcta";
}
?>
Explica cual es el objetivo de tu pregunta para ayudarte mejor
  #3 (permalink)  
Antiguo 21/07/2005, 18:44
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
he??? y en que momento $cadena se transforma en array separando los caracteres?

No entiendo ese codigo...

Creo que en expresiones regulares deberias usar ^a para saber si es la primer letra de la cadena...

por ejemplo para ^a:
alabama = coincide
a la quiaca voy = coincide
la barca = no coincide

Realmente no se nada de expresiones regulares, solo "toco de oido"...

Quizas deberias hacer algo como:

<?php
$variable = "america";
if (ereg("^a", $variable)){ echo 'existe'; }
else { echo 'no existe'; }
?>

Como dije, solo toco de oido por lo que deberias informarte mas
__________________
I Love Programming...
  #4 (permalink)  
Antiguo 21/07/2005, 19:08
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por FuLaNo_
he??? y en que momento $cadena se transforma en array separando los caracteres?
De www.php.net:
Cita:
Acceso a cadenas y modificación por caracter

Los caracteres al interior de una cadena pueden ser consultados y modificados al especificar el desplazamiento, comenzando en cero, del caracter deseado después de la cadena entre llaves.

Nota: Para efectos de compatibilidad con versiones anteriores, aun puede usar corchetes tipo matriz para el mismo propósito. Sin embargo, esta sintaxis es obsoleta a partir de PHP 4.

Ejemplo 11-4. Algunos ejemplos de cadenas
Código PHP:
<?php
// Obtener el primer caracter de una cadena
$cadena 'Esta es una prueba.';
$primer $cadena{0};

// Obtener el tercer caracter de una cadena
$tercer $cadena{2};

// Obtener el ultimo caracter de una cadena.
$cadena 'Esta es tambien una prueba.';
$ultimo $cadena{strlen($cadena)-1};

// Modificar el ultimo caracter de una cadena
$cadena 'Observe el mar';
$cadena{strlen($cadena)-1} = 'l';
        
?>
Ambas son soluciones... pero quizá sea mejor el uso de eregi().

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 21/07/2005, 19:13
okram
Invitado
 
Mensajes: n/a
Puntos:
Cita:
Iniciado por FuLaNo_
he??? y en que momento $cadena se transforma en array separando los caracteres?

No entiendo ese codigo...
Alguien ya se planteo esa duda antes... checate este post
http://www.forosdelweb.com/f18/curiosidad-sobre-cadena-array-315398/

Salu2
  #6 (permalink)  
Antiguo 21/07/2005, 22:23
 
Fecha de Ingreso: febrero-2005
Mensajes: 670
Antigüedad: 19 años, 2 meses
Puntos: 0
Por lo que pidió me parece que tendría que hacer:
Código PHP:
eregi("(^[a-z])"$variable$resultados
CREO que $resultados[1] contiene la letra que buscás.

Suerte
Fede
__________________
Federico H. García
Desarrollo Web
www.federicog.com.ar
  #7 (permalink)  
Antiguo 21/07/2005, 23:53
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Hola:
Sólo quiero aclarar que, en la medida de lo posible, debemos evitar el uso de expresiones regulares, pues son mucho más costosas en cuanto a recursos del sistema. Ya lo dijo okram: Para obtener el primer caracter de una cadena basta con hacer:
Código PHP:
$primer_caracter $cadena{0}; 
Insisto en que se deben utilizar llaves ({ })y no corchetes([ ]). ¿Por qué sobecargar el código utilizando funciones costosas cuando tenemos la variable ya disponible?
En el post que cita okram:
http://www.forosdelweb.com/showthread.php?t=315398

Y que jam recoge directamente del manual, está todo bastante claro. Este es el enlace directo: http://www.php.net/types.string#lang....string.substr

Por favor, denle una mirada al manual.

Saludos
  #8 (permalink)  
Antiguo 22/07/2005, 01:23
 
Fecha de Ingreso: febrero-2005
Mensajes: 670
Antigüedad: 19 años, 2 meses
Puntos: 0
Pero él no quiere el primer caracter, quiere la primera letra.
__________________
Federico H. García
Desarrollo Web
www.federicog.com.ar
  #9 (permalink)  
Antiguo 22/07/2005, 03:01
 
Fecha de Ingreso: mayo-2005
Mensajes: 188
Antigüedad: 18 años, 10 meses
Puntos: 6
Esto podría funcionar ....

Pues yo tampoco es que sea un hacha en esto de las expresiones regulares, pero pienso que algo así podría funcionar (o algo modificado):
Código PHP:
$cadena2 preg_replace('/^(^[a-z][A-Z]*)/'$cadena'');
$primeraLetra $cadena2{0}; 
La expresión regular no sé si sería exactamente esa, o alguna variación. La idea es simple: eliminar todos los caracteres desde el principio de la cadena que no sean letras. Entonces, el primer caracter del resultado será la primera letra de la cadena original.

Saludos
  #10 (permalink)  
Antiguo 22/07/2005, 09:44
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Si se usa ^ en la ER, se buscara solamente si el primer caracter es una letra, tal como dijo thunder.scripts.
Propongo esto:
Código PHP:
setlocale (LC_ALL'es_ES');  //para cazar la Ñ y ñ en linux. Si no anda en windows usa "spanish" en vez de 'es_ES'
preg_match("/[[:alpha:]]/i""5153_4esto es una cadena"$match); 
$match[0] tiene lo que buscas.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:02.