tengo estos datos en una columna LONGTEXT (por lo que los saltos de línea se conservan):preg_match PHP que no coincida con la línea pasada rompe
Paragraph one
Paragraph two
Paragraph three
Paragraph four
que estoy tratando de coincidir con el párrafo 1 a 3. Yo Estoy usando este código:
preg_match('/Para(.*)three/', $row['file'], $m);
Esto no devuelve nada. Si trato de trabajar sólo dentro de la primera línea del párrafo, haciendo coincidir:
preg_match('/Para(.*)one/', $row['file'], $m);
A continuación, el código funciona y me sale la cadena adecuada regresó. ¿Qué estoy haciendo mal aquí?
Advertencia: el modificador '/ s' es codicioso. Si hay más de un 'tres' en el texto, la coincidencia incluirá todo el texto hasta la última ocurrencia. use '/ sU' para evitar esto (observe la letra mayúscula U). –
@FrankForte no es realmente un problema de modificador: la repetición '*' es codiciosa per se. Un mejor enfoque es poner un signo de interrogación para hacerlo perezoso: '/ Para (. *?) Three/s'. Además, el modificador '/ U' no cancela la codicia, sino que la invierte:' * 'se vuelve floja y' *? 'Se vuelve codicioso. No es un problema en el código OP, pero puede desencadenar errores extraños en una expresión regular más compleja. –