Foros del Web » Programando para Internet » PHP »

expresion regular en php

Estas en el tema de expresion regular en php en el foro de PHP en Foros del Web. hola miren tengo esta expresion regular que lo que quiero es que encuentre las palabras que empiecen con abc y las demas letras o numeros ...
  #1 (permalink)  
Antiguo 11/12/2009, 09:55
 
Fecha de Ingreso: enero-2005
Mensajes: 386
Antigüedad: 19 años, 3 meses
Puntos: 3
expresion regular en php

hola miren tengo esta expresion regular que lo que quiero es que encuentre las palabras que empiecen con abc y las demas letras o numeros no importan

seria asi?:

/^[a-z,0-9]^[a-z,0-9]^[a-z,0-9]...*/
  #2 (permalink)  
Antiguo 11/12/2009, 09:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: expresion regular en php

no... debe ser algo así

Cita:
\b limite de palabra
abc que empiece por abc
[a-zA-Z0-9]* letras o números
\b limite de palabra
lee lo siguiente:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/12/2009, 10:10
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: expresion regular en php

aunque tambien basta con esto

Código PHP:
Ver original
  1. /(abc[^\s]+)/
__________________
More about me...
~ @rhyudek1
~ Github
  #4 (permalink)  
Antiguo 11/12/2009, 10:28
 
Fecha de Ingreso: enero-2005
Mensajes: 386
Antigüedad: 19 años, 3 meses
Puntos: 3
Respuesta: expresion regular en php

Gracias. miren puse mi expresion regular en el codigo pero no lo encuentra esta bien puesta?
lo que quiero buscar en el archivo es esto value='1260549590'/> de ahi es solo el numero, pero si busco solo el numero no lo encuentra ya que como tiene caracteres pegados lo toma como una palabra sola. los ultimo 5 digitos cambian constantemente:


function getSource($host,$page) {
$archivo = file("http://$host/$page");
reset ($archivo);
while (list ($clave, $val) = each ($archivo)) {
$cadena=htmlentities($val);
$palabra=preg_quote('<\b12605[0-9]*\b>'); if(
eregi("[ tnr]+".$palabra."[ tnr]+",$cadena)) {
echo "Si existe. $palabra" ; } else {
echo
'No existe'; }

echo htmlentities($val).'<br>';
}}

el problema es que me dice que no esta :( esta algo mal? o para buscarlo debo de hacerlo con esta expresion <\bvalue=.12605[0-9]*\b>

Última edición por Alphabravo; 11/12/2009 a las 10:43
  #5 (permalink)  
Antiguo 11/12/2009, 11:01
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: expresion regular en php

El problema es que no estas declarando un delimitador correctamente, si te fijas el delimitador que colocaste fue el < y luego terminas con >. Tienes que colocar un delimitador que sea el mismo al final como al principio.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 11/12/2009, 11:12
 
Fecha de Ingreso: enero-2005
Mensajes: 386
Antigüedad: 19 años, 3 meses
Puntos: 3
Respuesta: expresion regular en php

ya le e quitado los <> pero aun asi no lo encuentra si esta bien la expresion regular? o tomo esta otra:

\bvalue=.12605[0-9]*\b


el valo que tiene que buscar es el numero que esta dentro:

value='1260549590'/>
  #7 (permalink)  
Antiguo 11/12/2009, 11:17
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: expresion regular en php

No entiendo tu expresion regular, primero tienes declarado b que quiere decir que estas buscando la palabra b y luego algo llamado value. Segundo ¿por qué quieres declarar un punto después del símbolo del igual? Tercero el delimitador al principio es \ y luego al final colocas b dando a entender que es un modificador, pero que tenga entendido no existe un modificador b. Lee la guia que te indicó pateketrueke para que puedas entender mejor lo que te quiero decir. Acuerdate que la computadora sigue instrucciones tales como tu le estas indicando, solo tienes que entender como funciona cada valor que estas colocando. El delimitador tiene que ser un solo caracter, no dos caracteres.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 11/12/2009, 21:09
 
Fecha de Ingreso: enero-2005
Mensajes: 386
Antigüedad: 19 años, 3 meses
Puntos: 3
Respuesta: expresion regular en php

ok. a es que el punto es para un caracter es que en si lo que quiero que busca en un texto es esto value='1260549590' y el punto decia que es un simbolo, o como le pongo el ' gracias

di ls expresion regular queda asi: /1260....../ si funciona? para que me encuentre el numero de arriba los ultimos dijitos que estan en punto van cambiando

Última edición por Alphabravo; 11/12/2009 a las 23:00
  #9 (permalink)  
Antiguo 12/12/2009, 09:23
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: expresion regular en php

lo que sucede es que debes entender mas tu propia cadena, antes de atacarla con regex...
Cita:
/value='(1260\d+)'\/>/
la expresión casi siempre se toma como literal... solo debes cambiar caracteres y agregar agrupaciones si sabes lo que estas hacen.... y tu también debes saberlo!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 12/12/2009 a las 09:34
  #10 (permalink)  
Antiguo 12/12/2009, 10:49
 
Fecha de Ingreso: enero-2005
Mensajes: 386
Antigüedad: 19 años, 3 meses
Puntos: 3
Respuesta: expresion regular en php

Hola miren la probe pero sigue sin funcionarme algo estoy haciendo mal?

este es el php .

function getSource($host,$page) {
$archivo = file("http://$host/$page");
reset ($archivo);
while (list ($clave, $val) = each ($archivo)) {
$cadena=htmlentities($val);
$palabra=preg_quote("/value='(1260\d+)'\/>/"); if(
eregi("[ tnr]+".$palabra."[ tnr]+",$cadena)) {
echo "Si existe. $palabra" ; } else {
echo
'No existe'; }

echo htmlentities($val).'<br>';
}}
getSource("localhost","index2.php");



y este es lo que tiene el index2.php

<form action='' method='post'>
<input name='user' style="-wap-input-format: '*N'" maxlength="19" value=""/><br />
<br />
<textarea rows="2" cols="20" name="msg"></textarea><br />
<input type='hidden' name='t' value='1260636284'/>
<input type='submit' value=' Send ' /></form>


y cuando hago funcionar el php me imprime esto

No existe<form action='' method='post'>
No existe<input name='user' style="-wap-input-format: '*N'" maxlength="19" value=""/><br />
<br />
No existe<textarea rows="2" cols="20" name="msg"></textarea><br />
No existe<input type='hidden' name='t' value='1260636284'/>
No existe<input type='submit' value=' Send ' /></form>
  #11 (permalink)  
Antiguo 12/12/2009, 11:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: expresion regular en php

claro que estas haciendo "algo" mal!!

Código PHP:
// primero, no es necesario esto: porque te convierte todo a entidades
// y nuestra expresion no previene eso, ese es tu primer error...
// MAL
$cadena=htmlentities($val);

// luego usas preg_quote ¿si sabes lo que hace??
// porque esto tambien "rompe" nuestra expresion, ya
// que esta bien escrita... pero tu la destrozas escapandola
// MAL
$palabra=preg_quote("/value='(1260\d+)'\/>/");

// finalmente usas ereg, cuando todo el tiempo hemos hablado
// de PCRE osea... preg_* ...si no es lo mismo, ¿porque lo haces??
// MAL
if(eregi("[ tnr]+".$palabra."[ tnr]+",$cadena)) 
ahora, tan sencillo que es:
Código PHP:
if (preg_match("/value='(1260\d+)'\/>/"$cadena$matches))
{
  
// ...

te sugiero leer con atención el siguiente enlace, y si tienes mas dudas... no dudes en consultar el manual de PHP....
http://www.forosdelweb.com/f18/aport...s-pcre-646110/


suerte!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 12/12/2009, 14:49
 
Fecha de Ingreso: enero-2005
Mensajes: 386
Antigüedad: 19 años, 3 meses
Puntos: 3
Respuesta: expresion regular en php

lo de $cadena=htmlentities($val); lo pongo para que me imprima el codigo de una web y asi busque la palabra. por que si no como le hago para buscar por codigo web?
  #13 (permalink)  
Antiguo 12/12/2009, 16:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: expresion regular en php

Cita:
Iniciado por Alphabravo Ver Mensaje
lo de $cadena=htmlentities($val); lo pongo para que me imprima el codigo de una web y asi busque la palabra. por que si no como le hago para buscar por codigo web?
no tiene sentido lo que dices.. en ningún momento estas imprimiendo el código de la web que dices, solo lo estas leyendo....

y como te digo, si usas htmlentitites() va a escaparte el HTML de tu variable... y así queda inutilizado para la expresión, o bien rediseña la expresión....

es la función file() la que realmente obtiene el código de la página que indicas...

htmlentitites() ni siquiera imprime, ni te sirve para "buscar" como lo dices... por favor lee el manual de PHP...

http://php.net/htmlentities
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 10:40.