Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/09/2003, 07:03
Nark
 
Fecha de Ingreso: agosto-2003
Mensajes: 102
Antigüedad: 20 años, 8 meses
Puntos: 0
Pregunta ayuda con expresiones regulares, separar cadena en array...

amos a ver por el principio.... yo tengo un texto similar al siguiente:

[code]
<b>negrita</b>|*azul*||*2h*|<u>subrayado</u>|*verde*|<h1>titulo</h1><i>italica</i>|*12v*|
[code]


por partes:
- Yo quiero obtener el texto que hay entre |* y *| estos separadores los he definido yo, asi que si tienen que ser otros da igual.

a) Mi intencion es que las coincidencias me las guardara en un array. En este caso:
$array[0] = azul;
$array[1] = 2h;
$array[2] = verde;
$array[3] = 12v;

b) Tambien me interesara otra funcion que me devuelva solo esto:
$array[0] = 2h;
$array[1] = 12v;

c) Y el ultimo array que me interesaria obtener es:
$array[0] = <b>negrita</b>
$array[1] = azul
$array[2] = 2h
$array[3] = <u>subrayado</u>
$array[4] = verde;
$array[6] = <h1>titulo</h1><i>italica</i>
$array[5] = 12v

a ver, todo esto ya lo tengo hecho, pues con fors, splits... es facil, mi intencion es saber si existe una funcion que te lo haga automaticamente, he mirado las reglas de expresiones regulares y bien, creo que mas o menos las he construido bien, pero que funcion me coge una cadena de texto y me devuelve un array con las subcadenas que cumplen la condicion de la expresion regular (caso a, b)? y como hago para obtener un array como en el caso c?

PD. creo que la expresion regular seria similar a:
(caso a): \|\*[0-9a-zA-Z]*\*\|
Cualquier palabra, letra o numero que este entre |* y *|

(caso b): \|\*[0-9]{1,2}(h|v)\*\|
(o sea uno o dos numeros y luego una h o una v)