Comunidad de diseño web y desarrollo en internet online

Sumar con preg_replace

Citar            
MensajeEscrito el 10 Ago 2010 12:00 pm
Hola, de ante mano te agradesco por interesarte en mi post...

quiero encontrar unos numero y hacer una operacion matematica lo llevo a mi parecer por la mitad necesito una pequeña ayuda he buscado y no encuentro nada...

lo que tengo es...


Código PHP :

$suma = 10;
$cadena = "Z-INDEX: 7; WIDTH: 301px; HEIGHT: 150px; TOP: 338px; LEFT: 93px";
print preg_replace("/HEIGHT: (\d+)px;/", "HEIGHT: ".('\\1')." + ".$suma ." = " . (('\\1' + $suma)) . "Px;", $cadena) . "\n";


quiero que al HEIGHT le sume 10 mas, osea que me devulva 160, pero... no funciona me devuelve

Código HTML :

Z-INDEX: 7; WIDTH: 301px; HEIGHT: 150 + 10 = 10Px; TOP: 338px; LEFT: 93px 


sin mentirles llevo dos oras buscando en internet y nada

Gracias por su ayuda.

Por manhesoft

45 de clabLevel



 

Medellin, Colombia

firefox
Citar            
MensajeEscrito el 11 Ago 2010 08:08 am
La solución a tus problemas en este caso son los Delimitadores de expresiones regulares, te recomiendo leer la documentación al respecto, Aqui te pego la solución exacta a tu necesidad:

Código PHP :

<?php
$suma = 10; 
$pattern   =   '/(?<=HEIGHT:\s)\d+(?=px;)/';
$cadena    = "Z-INDEX: 7; WIDTH: 301px; HEIGHT: 150px; TOP: 338px; LEFT: 93px"; 
$matches   =   preg_match_all($pattern,$cadena,$height);
$height     =   $height[0][0];
$height    +=   10;
$new_cadena   =   preg_replace($pattern,$height,$cadena);
echo $new_cadena."<br/>"; //Z-INDEX: 7; WIDTH: 301px; HEIGHT: 160px; TOP: 338px; LEFT: 93px
?>

COPY, PASTE, PLAY AND ENJOY, de ahi nos cuentas como te fue xD

Por NeoCesar

Claber

1415 de clabLevel

14 tutoriales

Genero:Masculino  

Algun lugar dentro de la Matrix (Lima - Perú)

chrome
Citar            
MensajeEscrito el 11 Ago 2010 08:11 am
si se preguntan porque use preg_match_all y no preg_match unicamente por costumbre si desean usar preg_match el codigo seri

Código PHP :

<?php
$suma = 10; 
$pattern   =   '/(?<=HEIGHT:\s)\d+(?=px;)/';
$cadena    = "Z-INDEX: 7; WIDTH: 301px; HEIGHT: 150px; TOP: 338px; LEFT: 93px"; 
$matches   =   preg_match($pattern,$cadena,$height);
$height     =   $height[0];
$height    +=   10;
$new_cadena   =   preg_replace($pattern,$height,$cadena);
echo $new_cadena."<br/>";
?>

COPY, PASTE, PLAY AND ENJOY, de ahi nos cuentan como les fue xD

Por NeoCesar

Claber

1415 de clabLevel

14 tutoriales

Genero:Masculino  

Algun lugar dentro de la Matrix (Lima - Perú)

chrome
Citar            
MensajeEscrito el 11 Ago 2010 08:14 am
Hola Gracias por tu respuestas la verdad pense que iba a ser mas facil je je je no se una barra o una letra mala no pense que iba a ser tanto el cambio en el codigo je ej je

Gracias de corazon... sabes, ya habia echo una funcion con una cantidad de codigo para hacerlo je je pero lo que quiero y que tu lograstes es reducir codigo y que tegna el mismo resultado .


Gracias nuevamente...

Por manhesoft

45 de clabLevel



 

Medellin, Colombia

firefox
Citar            
MensajeEscrito el 11 Ago 2010 08:25 am
De anda estamos para darnos la mano entre nosostros

Por NeoCesar

Claber

1415 de clabLevel

14 tutoriales

Genero:Masculino  

Algun lugar dentro de la Matrix (Lima - Perú)

chrome
Citar            
MensajeEscrito el 12 Ago 2010 01:00 pm
encontre un erro je je ej si uno tiene varios height je je je ejecuta el script y veras, una solucion que hice fue con un explode no se si tu me des otra idea...

Por manhesoft

45 de clabLevel



 

Medellin, Colombia

msie8
Citar            
MensajeEscrito el 12 Ago 2010 01:56 pm
Pues encontré una forma mucho más efectiva para resolver tu problema, usando la función preg_replace_callback:

Código PHP :

<?php 
$pattern = '/(?<=HEIGHT:\s)\d+(?=px;)/';
$cadena  = "Z-INDEX: 7; WIDTH: 301px; HEIGHT: 150px; HEIGHT: 338px; LEFT: 93px";
$cadena  = preg_replace_callback($pattern,create_function('$coincidencia','$suma=10; return ($coincidencia[0]+$suma);'),$cadena);
echo $cadena."<br/>";
?>

Por NeoCesar

Claber

1415 de clabLevel

14 tutoriales

Genero:Masculino  

Algun lugar dentro de la Matrix (Lima - Perú)

chrome
Citar            
MensajeEscrito el 12 Ago 2010 02:27 pm
sos el mejor je je je yo lo habia echo con un explode je je je pero el tuyo esta mil veces mejor y mas facil de trabajar Gracias men.


Confio que no te molesto mas...

Por manhesoft

45 de clabLevel



 

Medellin, Colombia

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.