Foros del Web » Programando para Internet » PHP »

preg_match() y £ Libra Esterlina

Estas en el tema de preg_match() y £ Libra Esterlina en el foro de PHP en Foros del Web. Hola buenas tengo un pequeño problema, la cual con la función preg_match. he tratado de que me busque ese caracterer y no logra reconocerlo. Aquí ...
  #1 (permalink)  
Antiguo 10/06/2014, 12:17
 
Fecha de Ingreso: junio-2014
Mensajes: 10
Antigüedad: 9 años, 10 meses
Puntos: 0
Sonrisa preg_match() y £ Libra Esterlina

Hola buenas tengo un pequeño problema, la cual con la función preg_match. he tratado de que me busque ese caracterer y no logra reconocerlo.

Aquí les dejo mi código:

Siendo
$cap[1][$i] = £1.30
* = & # 1 6 3; (sin espacios)

//Verificando si es Libra esterlina
if(preg_match('/ * /', $cap[1][$i])>0){
if(preg_match_all('/([0-9]+),([0-9]+)/',$cap[1][$i],$le)){
echo "&nbsp;Libra: ".str_replace(",", ".", $le[0][0]) ."<br>";
}else{
if(preg_match_all('/([0-9]+) /',$cap[1][$i],$lem)){
echo "&nbsp;Libra: ".$le[0][0]."<br>";
}
}
}

adjunto la imagen para que se vea mejor



Gracias de antemano

Última edición por joanmigo; 10/06/2014 a las 12:27
  #2 (permalink)  
Antiguo 10/06/2014, 12:32
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: preg_match() y £ Libra Esterlina

que error te manda por pantalla?
por que no usas la herramienta highlight del foro para resaltar tu codigo php??
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #3 (permalink)  
Antiguo 10/06/2014, 12:40
 
Fecha de Ingreso: junio-2014
Mensajes: 10
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: preg_match() y £ Libra Esterlina

no me envia ningun error. el detalle es que como identifico que ese caracter (£) pertenece a esa cadena indicada £1.30 . ese es mi pequeño problema :(
  #4 (permalink)  
Antiguo 10/06/2014, 12:49
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: preg_match() y £ Libra Esterlina

mmm bueno en mi caso

hago un vector del tipo $variable[X]
y recorro con un bucle el vector y le voy guardando cada dígito del la cadena £1.30
luego que tengo el vector lleno con cada dígito entonces hago otro ciclo for o while que recorra y compara que uno de esos dígitos sea igual al signo £.
perooooo creo que por seguridad y por prueba imprimiría cada bucle del ciclo for para ver que encuentra...

digo solo es un poquito de logica he ideas locas que me facilitan hacer algo sencillo...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #5 (permalink)  
Antiguo 10/06/2014, 12:50
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: preg_match() y £ Libra Esterlina

Código PHP:
Ver original
  1. <meta charset="utf-8"/>
  2.  
  3. <?php
  4. $str = 'este bombon me costo solo £1.30, un regalo! y con lo que me sobró (£0.70) me compre un chupetin xD';
  5.  
  6. if (preg_match_all('/£([0-9.]{1,10})/', $str,$montos))     
  7.     foreach ($montos[1] as $monto)
  8.         echo "Gasto de £$monto <br/>";

SALIDA:

Cita:
Gasto de £1.30
Gasto de £0.70
__________________
Salu2!
  #6 (permalink)  
Antiguo 10/06/2014, 13:04
 
Fecha de Ingreso: junio-2014
Mensajes: 10
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: preg_match() y £ Libra Esterlina

He puesto ese codigo anteriormente y nada :(
mejor le muestro todo mi codigo:

Código PHP:
Ver original
  1. <div align="center">
  2.  
  3. <?php
  4. header('Content-Type: text/html; charset=iso-8859-1');
  5.  
  6. //$data = file_get_contents("http://steamcommunity.com/market/listings/570/Sash%20of%20the%20Third%20Insight");
  7. //$data = file_get_contents("http://steamcommunity.com/market/listings/570/Talon%20of%20the%20Scarlet%20Raven");
  8. //$data = file_get_contents("http://steamcommunity.com/market/listings/570/Dragonclaw%20Hook?filter=MEATHOOK");
  9. //$data = file_get_contents("http://steamcommunity.com/market/listings/570/Sash%20of%20the%20Ravager");
  10. //$data = file_get_contents("http://steamcommunity.com/market/listings/570/Arms%20of%20the%20Cryogenic%20Embrace");
  11. //$data = file_get_contents("http://steamcommunity.com/market/listings/570/Heroic%20Hood%20of%20the%20Scarlet%20Raven");
  12. $data = file_get_contents("http://steamcommunity.com/market/listings/570/Inscribed%20Wraps%20of%20the%20Drunken%20Warlord");
  13.  
  14.  
  15. if ( preg_match_all('/(?:th_fee\">)\s*(.+)\s*(?:<\/span>)/' , $data , $cap, PREG_PATTERN_ORDER ) )
  16. {
  17.     $i=0;
  18.     while ($i < 7){
  19.         if($i>=0){     
  20.                 //echo "num:".strlen(trim($cap[1][$i]))."<-<br>";
  21.                 //echo "res1:".trim($cap[0][$i])."<-<br>";
  22.                 //echo "res2:".trim($cap[1][$i])."<-<br>";
  23.                 $cap[0][$i]=trim($cap[0][$i]);
  24.                 $cap[1][$i]=trim($cap[1][$i]);
  25.             //  if(isset($cap[0][$i])){ echo "&nbsp;P".$i.": ".trim($cap[0][$i])."   --- T:".strlen(trim($cap[1][$i]))." <br>";}else{ echo "&nbsp;P".$i.": S/P<br>"; }
  26.                 if(isset($cap[1][$i])){ echo "&nbsp;P".$i.": ".trim($cap[1][$i])."   --- T:".strlen(trim($cap[1][$i]))." <br>";}else{ echo "&nbsp;P".$i.": S/P<br>"; }
  27.         }
  28.     $i++;
  29.     }
  30.    
  31.     echo "<br>-------------------------------------------------------------------------------------------------<br>";
  32.     $b=0;
  33.     while ($b < 7){
  34.         if($b>=0){     
  35.                 echo "<br>";
  36.                 $p1=$cap[1][$b];
  37.                 for($i=0;$i<strlen($p1);$i++){
  38.                     echo ord(substr($p1,$i,1))."-";
  39.                 }
  40.                 echo "<br>";
  41.                 for($i=0;$i<strlen($p1);$i++){
  42.                     echo chr(ord(substr($p1,$i,1)))."-";
  43.                 }
  44.         }
  45.     $b++;
  46.     }
  47.  
  48.     echo "<br>-------------------------------------------------------------------------------------------------<br>";
  49.    
  50.     $i=0;
  51.     while ($i < 7){
  52.         if($i>=0){ 
  53.             if(isset($cap[1][$i])){
  54.                 echo $i;
  55.                
  56.                 //Verificando si es dolar
  57.                 if(preg_match("/$/", $cap[1][$i])>0){
  58.                     if(preg_match_all('/([0-9]+).([0-9]+) /',$cap[1][$i],$dol)){
  59.                     echo "&nbsp;Dolares: ".$dol[0][0]."<br>";
  60.                     }else{
  61.                         if(preg_match_all('/([0-9]+) /',$cap[1][$i],$dol)){
  62.                         echo "&nbsp;Dolares: ".$dol[0][0]."<br>";
  63.                         }
  64.                     }
  65.                 }
  66.                
  67.                 //Verificando si es Rublo
  68.                 if(preg_match("/б/", $cap[1][$i])>0){
  69.                     if(preg_match_all('/([0-9]+),([0-9]+) /',$cap[1][$i],$rub)){
  70.                         echo "&nbsp;Rublos: ".str_replace(",", ".", $rub[0][0])."<br>";
  71.                     }else{
  72.                         if(preg_match_all('/([0-9]+) /',$cap[1][$i],$rub)){
  73.                         echo "&nbsp;Rublos: ".$rub[0][0]."<br>";
  74.                         }
  75.                     }
  76.                 }
  77.  
  78.                 //Verificando si es Euro
  79.                 if(preg_match("/€/", $cap[1][$i])>0){
  80.                     if(preg_match_all('/([0-9]+),([0-9]+)/',$cap[1][$i],$eu)){
  81.                     echo "&nbsp;Euro: ".str_replace(",", ".", $eu[0][0]) ."<br>";
  82.                     }else{
  83.                         if(preg_match_all('/([0-9]+) /',$cap[1][$i],$eu)){
  84.                         echo "&nbsp;Euro: ".$eu[0][0]."<br>";
  85.                         }
  86.                     }
  87.                 }          
  88.                
  89.                 //Verificando si es RealBrasileño
  90.                 if(preg_match("/R$/", $cap[1][$i])>0){
  91.                     if(preg_match_all('/([0-9]+),([0-9]+)/',$cap[1][$i],$rs)){
  92.                     echo "&nbsp;Real Brasileño: ".str_replace(",", ".", $rs[0][0]) ."<br>";
  93.                     }else{
  94.                         if(preg_match_all('/([0-9]+) /',$cap[1][$i],$rs)){
  95.                         echo "&nbsp;Real Brasileño: ".$rs[0][0]."<br>";
  96.                         }
  97.                     }
  98.                 }
  99.                
  100.                 //Verificando si es Libra esterlina
  101.                 //if(preg_match("/^œ/", $cap[1][$i])>0){
  102.                 if (preg_match_all('/£([0-9.]{1,10})/', $cap[1][$i],$le)){
  103.                 //if(preg_match('/£/', $cap[1][$i])>0){
  104.                     if(preg_match_all('/([0-9]+),([0-9]+)/',$cap[1][$i],$le)){
  105.                     echo "&nbsp;Libra: ".str_replace(",", ".", $le[0][0]) ."<br>";
  106.                     }else{
  107.                         if(preg_match_all('/([0-9]+) /',$cap[1][$i],$le)){
  108.                         echo "&nbsp;Libra: ".$lem[0][0]."<br>";
  109.                         }
  110.                     }
  111.                 }
  112.                
  113.                 $i++;
  114.             }
  115.         }
  116.     }
  117. }
  118.  
  119. ?>
  120. </div>

La respuesta de este codigo es el siguiente:




Gracias de antemano
  #7 (permalink)  
Antiguo 10/06/2014, 13:14
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: preg_match() y £ Libra Esterlina

el código no te va a servir directamente lo que tienes que hacer es adaptarlo a tu necesidad...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #8 (permalink)  
Antiguo 10/06/2014, 13:19
 
Fecha de Ingreso: junio-2014
Mensajes: 10
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: preg_match() y £ Libra Esterlina

el detalle no es extenderlo mas el codigo sino darle una solucion eficiente para este problema que tengo que me va a volver loco :/
  #9 (permalink)  
Antiguo 10/06/2014, 14:55
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: preg_match() y £ Libra Esterlina

jajaaj y que esperas que te lo hagamos??? el foro no es para programarle a los demas las soluciones que no pueden hacer es para dar una guia...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #10 (permalink)  
Antiguo 10/06/2014, 15:04
 
Fecha de Ingreso: junio-2014
Mensajes: 10
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: preg_match() y £ Libra Esterlina

Plop, creo que no me entendiste. En ningún momento te dije quiero que me brindes del código masticado.
A lo que yo me refiero es si algún "experto" pueda detectar mi error en mi código. Por la cual no funciona como debería de ser el código que he publicado.

Hay que leer para poder responder, Campeón ;) arcanisgk122
  #11 (permalink)  
Antiguo 10/06/2014, 15:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: preg_match() y £ Libra Esterlina

Cita:
Iniciado por joanmigo Ver Mensaje
Plop, creo que no me entendiste. En ningún momento te dije quiero que me brindes del código masticado.
A lo que yo me refiero es si algún "experto" pueda detectar mi error en mi código. Por la cual no funciona como debería de ser el código que he publicado.

Hay que leer para poder responder, Campeón ;) arcanisgk122
No hay que ser experto para detectar el error, es decir, en el manual de PCRE se explica muy bien el uso de modificadores y secuencias especiales de la expresión regular para manejar este tipo de caracteres Unicode.

http://www.php.net/manual/es/regexp....ce.unicode.php

Además nosotros no somos analizadores léxicos ni de sintaxis, ni tampoco manuales vivientes como para tener que adivinar nada, aquí ayudamos a resolver problemas, no hacemos clarividencia.

Hay que leer bien el manual antes de preguntar, Campeón.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 10/06/2014, 15:15
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: preg_match() y £ Libra Esterlina

tienes algo que normalmente se llama codigo espagueti, normalmente cuando comiensas a trabajar con PHP haces ese tipo de programacion, el señor Italico76 se curo unos minutos de su vida para explicarte como funciona si lo hace POO (programacion orientada a obejeto), te sugiero que replantes la logica con la que programaste tu script, segundo revisa la exprecion comun con la que buscas el simbolo y hay es donde estara el error. un experto solo de ver tu código apagaría el ordenador y se iria a tomar un cafe. SECUNDO la mosion de pateketrueke
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #13 (permalink)  
Antiguo 10/06/2014, 15:23
 
Fecha de Ingreso: junio-2014
Mensajes: 10
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: preg_match() y £ Libra Esterlina

No me estan ayudando. necesito detectar porque
Código PHP:
Ver original
  1. //Verificando si es Libra esterlina
  2.                 //if(preg_match("/^œ/", $cap[1][$i])>0){
  3.                 if (preg_match_all('/£([0-9.]{1,10})/', $cap[1][$i],$le)){
  4.                 //if(preg_match('/£/', $cap[1][$i])>0){
  5.                     if(preg_match_all('/([0-9]+),([0-9]+)/',$cap[1][$i],$le)){
  6.                     echo "&nbsp;Libra: ".str_replace(",", ".", $le[0][0]) ."<br>";
  7.                     }else{
  8.                         if(preg_match_all('/([0-9]+) /',$cap[1][$i],$le)){
  9.                         echo "&nbsp;Libra: ".$lem[0][0]."<br>";
  10.                         }
  11.                     }
  12.                 }

no esta que "funciona"
no esta reconociendome la Libra esterlina en la linea 3 . Por favor se necesita soluciones
  #14 (permalink)  
Antiguo 10/06/2014, 15:31
 
Fecha de Ingreso: junio-2014
Mensajes: 10
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: preg_match() y £ Libra Esterlina

[SOLUCIONADO] ???

Donde esta la solución? no la vi :(
Realmente no hay nada solucionado.
  #15 (permalink)  
Antiguo 10/06/2014, 15:42
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: preg_match() y £ Libra Esterlina

la solución es vaya a estudiar el manual de expresiones regulares...al menos has intentado imprimir el resultado de las expresiones??
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #16 (permalink)  
Antiguo 10/06/2014, 15:44
 
Fecha de Ingreso: junio-2014
Mensajes: 10
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: preg_match() y £ Libra Esterlina

Sin comentarios :) Gracias por la Excelente Solución Campeón :) Good Forum ;)
  #17 (permalink)  
Antiguo 10/06/2014, 15:45
 
Fecha de Ingreso: junio-2014
Mensajes: 10
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: preg_match() y £ Libra Esterlina

Yo realmente prefiero que elimines mi post en vez de dejarlo como [SOLUCIONADO] . es la decisión mas inteligente en este caso :)
  #18 (permalink)  
Antiguo 10/06/2014, 15:45
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: preg_match() y £ Libra Esterlina

Cita:
Iniciado por joanmigo Ver Mensaje
No me estan ayudando.


Para empezar usas 50 veces preg_match() cuando no se necesita tanta cosa y segundo ni miraste el ejemplo que te pase

__________________
Salu2!
  #19 (permalink)  
Antiguo 10/06/2014, 15:49
 
Fecha de Ingreso: junio-2014
Mensajes: 10
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: preg_match() y £ Libra Esterlina

@Italico76
Si lo revise e incluso probé el código en mi servidor. me sigue arrojando que no lo encuentra.
Muy aparte de eso, considero tus respuestas como las mas inteligente de este post.

Gracias por dedicarme tu tiempo. y si puedes seria bueno que sea eliminado este post.
  #20 (permalink)  
Antiguo 10/06/2014, 15:53
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: preg_match() y £ Libra Esterlina

elproblema es que tomas un codigo echo por alguien como ejemplo y lo pones en tu servidor esperando que por arte de magia funcione... y las cosas no son asi aqui el señor dedico el tiempo para mostrarte un codigo que era funcional para el y tal ves no para ti , pero que puede ser un ejemplo de hacer tu codigo mas eficiente y que de los resultados que tu quieres con algunas modificaciones, sinceramente no podemos ayudarte mas por que no tenemos el tiempo para ponernos a mirar tu 140 lineas de codigo y encontrar un error de exprecion en una logica que solo tu conoces(codigo espagueti)... suerte
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #21 (permalink)  
Antiguo 10/06/2014, 16:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: preg_match() y £ Libra Esterlina

Cita:
Iniciado por joanmigo Ver Mensaje
Donde esta la solución? no la vi :(
Cita:
Iniciado por pateketrueke Ver Mensaje
[...] en el manual de PCRE se explica muy bien el uso de modificadores y secuencias especiales de la expresión regular para manejar este tipo de caracteres Unicode.

http://www.php.net/manual/es/regexp....ce.unicode.php

Cita:
Iniciado por joanmigo Ver Mensaje
Realmente no hay nada solucionado.
Lee el manual y lo solucionarás, Campeón.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: Ninguno
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 02:49.