最新消息:VPS服务器又从fzhost.net换回Linode了,主题仍用朋友推荐的大前端D8

【已解决】PHP中的正则表达式代码执行出错:Warning: preg_match() [function.preg-match]: Unknown modifier xxx in xxx.php on line xx

PHP preg_match crifan 1028浏览 0评论

【问题】

写了段正则表达式代码:

$outestDivPattern = '/<div class="s-ele" name="DAcIWwYPCgQVR6W">(.+)</div>/';

结果运行出错:

Warning: preg_match() [function.preg-match]: Unknown modifier ‘d’ in xxx.php on line 23

 

【解决过程】

1.参考:

Warning: preg_match() [function.preg-match]: Unknown modifier ‘(‘

基本看懂含义了,意思是,正则表达式中,第一个字符,始终被看错是分隔符delimiter

2. 所以,此处结果就是:

上述正则的第一个字符是斜杠’/’

所以以此往后找,再找一个斜杠’/’

就结束了,得到的是:

/<div class="s-ele" name="DAcIWwYPCgQVR6W">(.+)</

所以,后面跟着的内容:

div>/

就没法识别了。

3.所以,解决办法是:

把第一个字符,改为别的,和当前正则表达式中的字符,不会冲突的,比如:

$outestDivPattern = ‘#<div class="s-ele" name="DAcIWwYPCgQVR6W">(.+)</div>#’;

就可以了。

另外,改为别的,比如波浪号,也是可以的:

$outestDivPattern = ‘~<div class="s-ele" name="DAcIWwYPCgQVR6W">(.+)</div>~’;

4.更多官网的解释,参考:

preg_match

 

【总结】

PHP中的正则的写法是:

1.2第一个字符被认定为分隔符delimiter

2. 两个分隔符之间的内容,被看作是正则表达式

3. 正则表达式后面,可以跟着一些flag,比如i表示ignoreCase之类的

更多flag参数的详细含义可参考:内部选项设置

4. 最常用的,分隔符delimiter是斜杠’/’:

/xxx/flag

如果表达式里面有斜杠,第二常用的是井号’#’

#xxx#flag

转载请注明:在路上 » 【已解决】PHP中的正则表达式代码执行出错:Warning: preg_match() [function.preg-match]: Unknown modifier xxx in xxx.php on line xx

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
13 queries in 0.218 seconds, using 10.31MB memory