2015-06-23 4 views
0

Я пытаюсь получить все символы между тегами стиля. это мое регулярное выражениеPhp regex multiline search issue

'#<style>(.*?)</style>' 

Это производит результат правильно Однако он не работает для мульти линии

Работа правильно для этого:

<style>body { height: '100%'; }</style> 

Это не работает

<style> 
body { 
    height: '100%'; 
} 

</style> 

Я знаю/s или [/ s/S] или s будет w орк, но я не как они будут работать

С уважением

+4

Используйте это регулярное выражение: '' # # s'' – anubhava

+1

Вы ответили первым и верным для меня, но не могли принять ответ, поскольку это комментарий. В любом случае, спасибо :) –

ответ

1

Вы можете использовать модификаторы шаблонов для соответствия мультилиний с PCRE регулярное выражение: http://php.net/manual/en/reference.pcre.pattern.modifiers.php

m - многострочный модификатор. s - это модификатор, позволяющий точкам соответствовать новым строкам. Так как насчет рисунка, как этот:

'#<style>(.*?)</style>#ms' 

Я думаю, вы также можете быть заинтересованы в модификаторе i поскольку теги могут быть сформулированы <style> или <STYLE> или другие ароматы <StYlE> которым являются корректными.

0

использовать это:

<style>([\s\S]*)<\/style> 

DEMO

0

"." соответствует любому одиночному символу, кроме \ n, поэтому '<style>(.*?)</style>' не будет работать в многострочной ситуации. в то время как [\ s \ S] * будет соответствовать любому символу, включая \ n.