Comunidad de diseño web y desarrollo en internet online

Expresiones regulares PHP y BBCode

Citar            
MensajeEscrito el 24 Oct 2009 01:33 pm
Hola me gustaría una ayuda para resolver mi problema...
Miren, tengo un código HTML, el cual al pasar por PHP debería buscar ciertos caracteres y ver si la string es la que se busca, luego se reemplaza...


Código PHP:



Código PHP :

<?php

$STRING ='<body>';
$STRING.='<div></div>';
$STRING.='<div id="content">';
$STRING.='<div id="string" class="red" rel="AS1">My String<div>';
$STRING.='</div>';
$STRING.='</body>';

//Solo busca
if( preg_match('/[\<div id\=\"string\" class\=\"red\" rel\=\"AS1\"\>(.*?)\<\/div\>]/is',$STRING) ) { echo 'Encontrado'; }

//Solo Reemplaza
preg_replace('/[\<div id\=\"string\" class\=\"red\" rel\=\"AS1\"\>(.*?)\<\/div\>]/is','Encontrado',$STRING);
?>



Entonces como verán, mi código busca dentro de todo el resto, ahora, no se como hacer para que encuentre solo lo que le pido... No se que tiene de mal mi expresión regular PHP.

Por nocrosis

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 24 Oct 2009 06:38 pm
Quieres reemplazar la cadena:
<div id="string" class="red" rel="AS1">My String<div>
Por la cadena:
Encontrado
¿Es eso?.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 24 Oct 2009 10:29 pm
Sip, es eso mismo :D

Por nocrosis

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Oct 2009 04:56 am
Bueno, encontré tres problemas, el primero es el más obvio, no almacenas el resultado de la función preg_replace en ninguna parte. El segundo es que tienes unos corchetes rectos que causan que toda la cadena objetivo sea un match de la expresión regular (excepto algunos literales). El tercero, el código HTML de prueba que estás usando no está bien, tienes un <div> sin cerrar, el que está más al centro, justo el que quieres reemplazar ;).

Entonces esto sí funciona:

Código PHP :

<?php
$STRING ='<body>'; 
$STRING.='<div></div>'; 
$STRING.='<div id="content">'; 
$STRING.='<div id="string" class="red" rel="AS1">My String</div>'; // div cerrado correctamente
$STRING.='</div>'; 
$STRING.='</body>'; 
 
$STRING = preg_replace('/\<div id\=\"string\" class\=\"red\" rel\=\"AS1\"\>(.*?)\<\/div\>/is','Encontrado',$STRING); 
echo $STRING; // muestra el resultado
?>

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

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