这两个差异声明有什么不同?任何参考文件?
'{<table width="100%" border="0" cellspacing="0" cellpadding="0">.*?</table>}si' -> Success
'%<table width="100%" border="0" cellspacing="0" cellpadding="0">.*?</table>%si' -> Fail
答案 0 :(得分:5)
好吧,你正在使用在你的字符串中使用的分隔符(100%
),如果你决定使用%作为分隔符,你需要使用反斜杠转义字符串中的%的任何实例。以下内容适用:
'%<table width="100\%" border="0" cellspacing="0" cellpadding="0">.*?</table>%si'
答案 1 :(得分:1)
请参阅documentation:
使用PCRE功能时,要求图案由分隔符包围。分隔符可以是任何非字母数字,非反斜杠,非空白字符。
经常使用的分隔符是正斜杠(/),哈希符号(#)和波浪号(〜)。以下是有效分隔模式的所有示例。
/foo bar/ #^[^0-9]$# +php+ %[a-zA-Z0-9_-]%
除了前面提到的分隔符之外,还可以使用括号样式分隔符,其中开始和结束括号分别是起始和结束分隔符。
{this is a pattern}
所以它们都是等价的,只是一个使用第一个样式的分隔符而另一个使用大括号。但两者都在划定正则表达式。在两种情况下,正则表达式选项都在结束分隔符之后。