Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/10/2015, 11:47
Avatar de pateketrueke
pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿por que no me captura la cadéna de carácteres?

¿Si sabes que las expresiones regulares tienen sus propias reglas y es considerado un lenguaje independiente?

Te invito a visitar el sub-foro de RegExp por si tienes más dudas, te explico:

1. Los cuantificadores * están mal, porque significan cero o más, y sin usar anclas (^$) básicamente no se extiende más allá, es decir: no es greedy

2. Igual te hace falta el modificador "u" para que acepte todo como Unicode, eso es básico si tratas de usar meta-agrupadores tipo \p*

Así ya funciona mejor:
Código PHP:
Ver original
  1. $k = '"aquí cualquier cantidad de caracteres con o sín especiales ñáú..."';
  2.  
  3. $x = '(\w+)';
  4. preg_match("@$x@uis", $k, $r);
  5. print_r($r);
  6.  
  7. $x = '[\w\pL ]+';
  8. preg_match("@$x@uis", $k, $r);
  9. print_r($r);
  10.  
  11. $x = '\w+';
  12. preg_match("@$x@uis", $k, $r);
  13. print_r($r);

La solución consiste básicamente en usar + que significa uno o más, además sí es greedy e intentará "comer" tanto como alcance la expresión.

Además con el modificador "u" nos aseguramos de "entender" Unicode, un requerimiento básico a estas alturas.

Otro error común es colocar los cuantificadores fuera de los paréntesis: jamás debes hacerlo.

Lo correcto primero es cuantificar y agrupar, el último paso sería capturar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.