Php preg\u match\u all错误与\n(换行符)

Php preg\u match\u all错误与\n(换行符),php,pattern-matching,preg-match-all,Php,Pattern Matching,Preg Match All,我对preg_match_all有以下模式:/(]*value=.?(\w*).?[^>]*注释[^>]*>)(.*?/,适用于此文本: example<span id="Marky100120131906070" class="myMarkGen" value="247" name="annotation">logy.*-/+!\"·$%&/()=?¿hi </span>example examplelogy.*-/+\“·$%&/()=??”示例 但在这种

我对preg_match_all有以下模式:
/(]*value=.?(\w*).?[^>]*注释[^>]*>)(.*?/
,适用于此文本:

example<span id="Marky100120131906070" class="myMarkGen" value="247" name="annotation">logy.*-/+!\"·$%&/()=?¿hi </span>example
examplelogy.*-/+\“·$%&/()=??”示例
但在这种情况下,这不起作用:

example<span id="Marky100120131906070" class="myMarkGen" value="247" name="annotation">logy.*-/+!\"

·$%&/()=?¿hi </span>example
examplelogy.*-/+!\”
·$%&/()=??hi示例
请注意,有一个换行符

什么样的模式在这两种情况下都有效,并且不管span的内容如何都有效?我需要span中的文本和span的值


您可以尝试使用它加上它将执行的修改器:

/(<span[^>]*value=.?(\w*).?[^>]*annotation[^>]*>)(.*?)<\/span>/smi
/(]*value=.?(\w*).?[^>]*注释[^>]*>)(.*)/smi

加上它将执行的修改器:

/(<span[^>]*value=.?(\w*).?[^>]*annotation[^>]*>)(.*?)<\/span>/smi
/(]*value=.?(\w*).?[^>]*注释[^>]*>)(.*)/smi

谢谢,它成功了!你能解释一下这个/smi吗。“它有什么用?”马丁看到这个解释。实际上,我想你可以使用multilne(
m
)修饰符,不是吗?@Martin你需要s修饰符(如果设置了这个修饰符,模式中的点元字符匹配所有字符,包括换行符。没有它,就不包括换行符。),我更喜欢s+m,当设置m时,“行的开始”和“行的结束”在主题字符串中的任何换行符之后/之前立即匹配结构。我只是代表忽略大小写,所以不管你是否有大写和小写字母。谢谢,它成功了!你能解释一下这个/smi吗。“它有什么用?”马丁看到这个解释。实际上,我想你可以使用multilne(
m
)修饰符,不是吗?@Martin你需要s修饰符(如果设置了这个修饰符,模式中的点元字符匹配所有字符,包括换行符。没有它,就不包括换行符。),我更喜欢s+m,当设置m时,“行的开始”和“行的结束”在主题字符串中的任何换行符之后/之前立即匹配结构。我只是代表忽略大小写,所以不管你有大小写字母。